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

news2024/12/23 20:23:29

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 np

frame = 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.activedocument
    sel = doc.selection
    part = doc.part
    sketch = part.inworkobject
    f2d = sketch.factory2d

    catia.refreshdisplay = False
    catia.HSOSynchronized = False
    for 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 = True
    catia.HSOSynchronized = True

except pywintypes.com_error as e:
    # 如果出现错误,可能是因为没有活动文档
    print("无法获取活动文档,请确保CATIA应用程序中已有打开的文档。")
    print(e)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c#+Mysql房屋租赁管理系统

一、引言 随着房价的不断升高&#xff0c;人们对房屋的需求越来越难以满足&#xff0c;对于一些在外地工作的人来说租房子成为了一种常态&#xff0c;因此出现了越来越多的房屋中介&#xff0c;而对于房屋中介而言&#xff0c;管理日益增加租户的信息和房产的信息成了一个至关…

Hono——一个小型,简单且超快的Edges Web框架

Hono - [炎]在日语中的意思是火焰&#x1f525; - 是一个小型&#xff0c;简单且超快的Edges Web框架。它适用于任何JavaScript运行时&#xff1a;Cloudflare Workers&#xff0c;Fastly ComputeEdge&#xff0c;Deno&#xff0c;Bun&#xff0c;Vercel&#xff0c;Netlify&…

【Leetcode】滑动窗口合集

这里写目录标题 209.长度最小的子数组题目思路代码 3. 无重复字符的最长子串&#xff08;medium&#xff09;题目思路 11. 最大连续 1 的个数 III题目思路 1658. 将 x 减到 0 的最⼩操作数题目思路代码 904. 水果成篮题目思路代码 438.找到字符串中所有字母的异位词题目思路代码…

政治与科技

作者&#xff1a;Hal Finney, 1994.1.2 今天政府可以禁书吗&#xff1f;当然不&#xff0c;至少在一个人将其输入或扫描到计算机中之后不能。技术成果是永久性的。政治手段只能作为一种战术武器&#xff0c;在技术解决方案到位之前阻止它们。如果你想改变世界&#xff0c;就不要…

Pytorch目标分类深度学习自定义数据集训练

目录 一&#xff0c;Pytorch简介&#xff1b; 二&#xff0c;环境配置&#xff1b; 三&#xff0c;自定义数据集&#xff1b; 四&#xff0c;模型训练&#xff1b; 五&#xff0c;模型验证&#xff1b; 一&#xff0c;Pytorch简介&#xff1b; PyTorch是一个开源的Python机…

python二次开发CATIA:为选中元素上色

先打开一个零件文档&#xff0c;然后用鼠标选中元素&#xff0c;再运行如下python程序&#xff1a; import win32com.client import pywintypes # 导入pywintypes模块 import random # 启动CATIA应用 catia win32com.client.Dispatch(CATIA.Application) catia.visible1try:…

在OpenWrt中配置使用FTP文件服务

安装&#xff1a;opkg install vsftpd 配置&#xff1a;vim /etc/vsftpd.conf 在其中增加一行&#xff1a;local_root/tmp 重启&#xff1a;service vsftpd restart

基于B2B平台的医疗病历交互系统

目录 前言 一、技术栈 二、系统功能介绍 医院管理 医院注册 医院文章 医生信息 医院注册 医疗安排 院区注册 医院公告 医院工作人员 病人病历 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 进入21世纪&#xff0c;计算机技术迅速向着网络化的、集…

pytorch最后一步安装失败显示false怎么办?

这两天在安装pytorch&#xff0c;可谓是吃了不少苦&#xff0c;安了整整一天才安装好。 本来按照安装步骤&#xff0c;一步一步都进行的很好&#xff0c;可是最后一步却显示false。 我的解决方案是&#xff0c;先更新显卡驱动&#xff08;注意我的是英伟达显卡&#xff0c;安…

什么是向量嵌入?

一、说明 在所有关于生成式AI的讨论中&#xff0c;为生成式AI提供动力背后的概念可能有点压倒性。在这篇文章中&#xff0c;我们将重点介绍一个功能概念&#xff0c;它为人工智能的潜在认知能力提供支持&#xff0c;并为机器学习模型提供学习和成长的能力&#xff1a;向量嵌入。…

【C语言】浅谈代码运行效率及内存优化

【C语言】浅谈代码运行效率及内存优化 C语言作为一种高效率的编译语言 常用来写单片机等讲究时序性的设备 而只有代码优化得好 才能提高运行效率 当然这里的代码优化 并不是编译器优化 而是人为的代码习惯 文章目录 代码效率条件判断if else语句 抛弃边缘状态中断函数串口解析…

算法基础学习|排序

快速排序 模板 void quick_sort(int q[], int l, int r) {if (l > r) return;int i l - 1, j r 1, x q[l r >> 1];while (i < j){do i ; while (q[i] < x);do j -- ; while (q[j] > x);if (i < j) swap(q[i], q[j]);}quick_sort(q, l, j)&#xf…

希尔排序(C++实现)

文章目录 前言1. 基础概念2. 动图演示3. 代码实现4. 排序过程5. 效率分析6. 总结 前言 上篇文章讲了直接插入排序算法。 首先&#xff0c;在待排序的数组中&#xff0c;元素本身就是有序的情况下&#xff0c;就不需要移动任何元素&#xff0c;所以直接插入排序最好情况时间复…

Javascript 事件的动态绑定

动态绑定事件&#xff0c;是指在代码执行过程中&#xff0c;通过Javascript代码来绑定事件。这种技术可以大大增强网页的交互性和用户体验。上一期介绍的是通过事件监听器 EventListener 去实现元素颜色的变化。这一期将通过动态绑定方法去实现&#xff0c;对象.事件 匿名函数…

哈希/散列--哈希表[思想到结构]

文章目录 1.何为哈希?1.1百度搜索1.2自身理解1.3哈希方法/散列方法1.4哈希冲突/哈希碰撞1.5如何解决?哈希函数的设计 2.闭散列和开散列2.1闭散列/开放定址法2.2开散列/链地址法/开链法1.概念2.容量问题 3.代码实现[配备详细注释]3.1闭散列3.2开散列 1.何为哈希? 1.1百度搜索…

【工具】idea 设置自动渲染注释

前言 需求&#xff1a;自动渲染文档注释&#xff0c;看源码更加舒服。 已知 crtl alt Q 可以 设置 尝试搜索 render&#xff0c;发现有启用 “渲染文档注释” 的地方 坐标 &#xff1a; Settings -> Editor-> Appearance

CSS3与HTML5

box-sizing content-box&#xff1a;默认&#xff0c;宽高包不含边框和内边距 border-box&#xff1a;也叫怪异盒子&#xff0c;宽高包含边框和内边距 动画&#xff1a;移动translate&#xff0c;旋转、transform等等 走马灯&#xff1a;利用动画实现animation&#xff1a;from…

分布式锁:jvm本地加锁解决商品超卖的方案

一 分布式锁 1.1 分布式锁的作用 在多线程高并发场景下&#xff0c;为了保证资源的线程安全问题&#xff0c;jdk为我们提供了synchronized关键字和ReentrantLock可重入锁&#xff0c;但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下&#xff…

python二次开发CATIA:根据已知数据点创建曲线

已知数据点存于Coords.txt文件如下&#xff1a; 8.67155477658819,20.4471021292557,0 41.2016126836927,20.4471021292557,0 15.9568941320569,-2.93388599177698,0 42.2181532110364,-6.15301746150354,0 43.0652906622083,-26.4843096139083,0 -31.6617679595947,-131.1513…