python二次开发CATIA:文字轮廓草图

CATIA V5 版本的草图中,并没有文字轮廓的创建命令。通常的做法是,再Drawing 文件中创建所需文本-->将 Drawing 文件另存为 dwg / dxf 格式-->打开另存的文件,文字已转为轮廓线条-->复制线条并粘贴到草图中。

本例中,基于 opencv 和 pillow两个库,先通过 PIL 将目标文字写到一张空白的图片中,然后再通过 opencv 的findContours 方法,提取该图片中的图形轮廓,最后提取轮廓中的坐标信息,并在CATIA 草图中绘制出相应的轮廓线条。
 

import win32com.client
import pywintypes  # 导入pywintypes模块
# 启动CATIA应用
catia = win32com.client.Dispatch('CATIA.Application')
catia.visible=1
# 输入文字并转码
text=input('请输入文字:\n')
str = text.encode('utf8').decode('utf8')# 字体大小与颜色
fontsize=100
fontcolor=(0,0,0)# 导入所需的库
from PIL import Image, ImageDraw, ImageFont# 创建一张白背景图片,尺寸根据输入文字数量自动确定
img_PIL=Image.new('RGBA',(100*len(str)+10,110),'white')
draw = ImageDraw.Draw(img_PIL)# 设置文字属性
font = ImageFont.truetype('simkai.ttf', fontsize) #字体与字号
fillColor = fontcolor # 字体颜色
position = (5, 5)  # 文字位置,距左/上# 把字写写到图片上
draw.text(position, str, font=font, fill=fillColor)import cv2
import numpy as npframe = cv2.cvtColor(np.asarray(img_PIL),cv2.COLOR_RGB2BGR)  # 转成OpenCV格式
# cv2.imshow('result',frame)
# cv2.waitKey()# 将图像转换成灰度图像,并执行图像高斯模糊,以及转化成二值图像
gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# blurred = cv2.GaussianBlur(gray, (1,1), 0)
ret,image_binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)# cv2.imshow('result',image_binary)
# cv2.waitKey()# 从二值图像中提取轮廓
# contours中包含检测到的所有轮廓,以及每个轮廓的坐标点
contours = cv2.findContours(image_binary.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_TC89_KCOS)[0]# 将轮廓画在图像上并显示
cv2.drawContours(frame,contours,-1,(0,0,255),1)try:doc = catia.activedocumentsel = doc.selectionpart = doc.partsketch = part.inworkobjectf2d = sketch.factory2dcatia.refreshdisplay = Falsecatia.HSOSynchronized = Falsefor i in range(1, len(contours)):c = contours[i]for j in range(0, len(c) - 1):if j < len(c) - 2:pt1 = c[j][0]pt2 = c[j + 1][0]else:pt1 = c[j][0]pt2 = c[0][0]# print(pt1,pt2)ln = f2d.createline(pt1[0] - 5,-pt1[1] + fontsize + 5,pt2[0] - 5,-pt2[1] + fontsize + 5)catia.refreshdisplay = Truecatia.HSOSynchronized = Trueexcept pywintypes.com_error as e:# 如果出现错误,可能是因为没有活动文档print("无法获取活动文档,请确保CATIA应用程序中已有打开的文档。")print(e)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/124355.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#餐饮收银系统

一、引言 餐饮收银系统是一种用于管理餐馆、咖啡厅、快餐店等餐饮业务的计算机化工具。它旨在简化点餐、结账、库存管理等任务&#xff0c;提高运营效率&#xff0c;增强客户体验&#xff0c;同时提供准确的财务记录。C# 餐饮收银系统是一种使用C#编程语言开发的餐饮业务管理软…

java飞机大战

一、 概述 1.1 项目简介 本次Java课程设计是做一个飞机大战的游戏&#xff0c;应用Swing编程&#xff0c;完成一个界面简洁流畅、游戏方式简单&#xff0c;玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库、事件监听以及贴图技术。 1…

【Java】多态

概念 多态 是面向对象三大特征之一。 同一个对象&#xff0c;在不同的时刻表现出来的不同形态。 举例&#xff1a;狗 狗就是狗 狗 dog new 狗&#xff08;&#xff09;&#xff1b; 我们也可以说 动物 animal new 狗&#xff08;&#xff09;&#xff1b; 这里狗在不…

【MySQL教程】| (1-1) 2023MySQL-8.1.0 安装教程

文章目录 一、安装包下载二、安装配置1、解压安装包2、编写MySQL配置文件3、初始化MySQL数据库3、安装mysql服务并启动4、MySQL服务5、连接MySQL6、修改密码 三、配置环境变量四、防止mysql自启动拖慢开机时间 近日有粉丝问到mysql在win11的安装中遇到一些问题&#xff0c;应粉…

智慧工地源代码 SaaS模式云平台

伴随着技术的不断发展&#xff0c;信息化手段、移动技术、智能穿戴及工具在工程施工阶段的应用不断提升&#xff0c;智慧工地概念应运而生&#xff0c;庞大的建设规模催生着智慧工地的探索和研发。 什么是智慧工地&#xff1f; 伴随着技术的不断发展&#xff0c;信息化手段、移…

C/C++学习 -- 分组加密算法(DES算法)

数据加密标准&#xff08;Data Encryption Standard&#xff0c;DES&#xff09;是一种对称密钥加密算法&#xff0c;是信息安全领域的经典之作。本文将深入探讨DES算法的概述、特点、原理&#xff0c;以及提供C语言和C语言实现DES算法的代码案例。 一、DES算法概述 DES算法是…

数据库存储引擎和数据类型详细介绍

目录 一、数据库存储引擎&#xff08;了解&#xff09;1.了解MySQL体系结构2.存储引擎&#xff08;了解&#xff09;2.1.存储引擎的介绍2.2.存储引擎分类2.3.如何选择引擎&#xff1f; 3.事务控制语言(TCL)事务的四个特性(ACID) 二、数据类型&#xff08;了解&#xff09;1.整型…

JavaScript系列从入门到精通系列第十二篇:JavaScript中对象的简介和对象的基本操作以及JavaScript中的属性值和属性名

文章目录 前言 一&#xff1a;对象分类 1&#xff1a;内建对象 2&#xff1a;宿主对象 3&#xff1a;自建对象 二&#xff1a;对象的基本操作 1&#xff1a;创建对象 2&#xff1a;向对象中添加属性 3&#xff1a;读取对象中的属性 4&#xff1a;修改对象中的属性 三…

《幸福之路》罗素(读书笔记)

目录 作者简介 作者的感悟 经典摘录 一、不幸福的成因 1、一部分要归咎于社会制度 2、一部分则得归咎于个人心理——当然&#xff0c;你可以说个人心理是社会制度的产物。 二、欠缺某些想要的东西&#xff0c;是快乐的必要条件 三、无聊与刺激 四、现代人的精神疲劳 五…

FFmpeg 命令:从入门到精通 | ffplay 播放控制选项

FFmpeg 命令&#xff1a;从入门到精通 | ffplay 播放控制选项 FFmpeg 命令&#xff1a;从入门到精通 | ffplay 播放控制选项选项表格图片 FFmpeg 命令&#xff1a;从入门到精通 | ffplay 播放控制选项 选项表格 项目说明Q&#xff0c;Esc退出播放F&#xff0c;鼠标左键双击全…

Vue实现Hello World

<div id"aa"> <p>{{h}}</p> </div> <script src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js"></script> <script> const hello new Vue({ el:#aa, data:{ h : Hello World } }) </script>

Appleid苹果账号自动解锁改密(自动解锁二验改密码)

目前该项目能实现以下功能&#xff1a; 多用户使用&#xff0c;权限控制多账号管理账号分享页&#xff0c;支持设置密码、有效期、自定义HTML内容自动解锁与关闭二步验证自动/定时修改密码自动删除Apple ID中的设备代理池与Selenium集群&#xff0c;提高解锁成功率允许手动触发…