明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2341|回复: 11

求助!python开发 pywin32

[复制链接]
发表于 2022-4-20 15:52:20 | 显示全部楼层 |阅读模式
本人最近刚入手开发cad,编程语言使用的是python,主要用pywin32包,在绘制3DSolid的时候遇到了个问题,我想使用这个方法RetVal=object.AddExtrudedSolidAlongPath(Profile, Path),Profile值得是面域,Path指的是拉伸的路径,现在的问题是参数的传入,每次运行时候都会有图片上的错误,求教我应该怎么做?




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-11-4 10:51:50 | 显示全部楼层
本帖最后由 jacenhe 于 2022-11-4 10:53 编辑

提供一个更简单的方法:
利用 Python 就可以方便地调用AutoCAD,不用装啥 pywin32。

例子:
  1. import com.cad;
  2. var cad = com.cad();
  3. var VL = cad.GetInterfaceObject("vl.application.16");

  4. import py3;
  5. py3.main.VL = py3.export(VL.ActiveDocument.Functions);
  6.   
  7. var pyCode = /**
  8. def testPy():
  9.   path = VL("GetFiled")("打开文件:", "./", "*", 8)
  10.   return path
  11. **/

  12. //执行Python代码
  13. py3.exec( pyCode )

  14. //调用 Python 函数
  15. var path = py3.main.testPy();

Python + aardio 混合开发非常方便,
参考我在头条写的文章:《 aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE 》

可参考 aardio 自带范例:
范例  > COM 组件 > AutoCAD
范例  > 调用其他语言 > Python

发表于 2023-1-9 19:12:10 来自手机 | 显示全部楼层
本帖最后由 landsat99 于 2023-1-9 20:10 编辑

外部调用不完善的cad api,并且你还用非官方推荐的java go python这些技术栈,办法至少有三类。 一是用c++把acad提供的arx框架二次封装,用什么就封出来,并extern “C”方式暴露出接口,python可以用ctypes库匹配类型调用。二是把acad的.net库二次封装为传统COM库,核心net库是acad主推的bug少,封装成com规范的dll方便多种调用,不限python。com库出来后需要注册表注册,传统方式了。三是c#封装net标准库为你团队的二次库,起码 py java c#都能用。python用pythonnet包匹配,import cls,这个net封装的是class,和方案一的函数封装略有不同 每次要实例化才能用。java调用是jni4net包来匹配即可。
 楼主| 发表于 2022-10-20 11:13:34 | 显示全部楼层
w8826543 发表于 2022-5-23 21:26
楼主,object.AddExtrudedSolidAlongPath(Profile, Path)我也遇到了问题,请问这个解决了吗?

AddRegion方法不返回区域对象,而是返回该区域中的对象数组(变体)
部分代码如下
RetVal = self.msp.AddRegion(ObjectList)
line = self.msp.Add3Dpoly( self.vtlist([num[5], num[6], num[7], num[0], num[1], num[2]]))
line_for_3D = self.msp.AddExtrudedSolidAlongPath(RetVal[0], line)
发表于 2022-5-23 21:26:46 | 显示全部楼层
楼主,object.AddExtrudedSolidAlongPath(Profile, Path)我也遇到了问题,请问这个解决了吗?
发表于 2022-6-7 10:08:07 | 显示全部楼层
python写这个玩意儿真的拉跨,com口功能不够强大,python调用速度又慢,趁早放弃
发表于 2022-10-29 22:31:07 | 显示全部楼层
mylovecc 发表于 2022-6-7 10:08
python写这个玩意儿真的拉跨,com口功能不够强大,python调用速度又慢,趁早放弃

我用python做的插件,动不动报错……有时就运行好好的,有时就呼叫失败……真的太拉跨!
发表于 2023-1-5 15:22:16 | 显示全部楼层
想用C#开发了
发表于 2023-1-9 18:46:15 来自手机 | 显示全部楼层
首先明确的是,这问题与python及win32com并没任何关系,是cad的com api不完善导致。记得以前有人提过AddExtrudedSolidAlongPath等三维造型命令在com框架下有bug。另外我用官方提供的com代码也验证了 确实属实。
发表于 2023-1-9 18:50:31 来自手机 | 显示全部楼层
acad的com框架十几年前就开始边缘化了,,vba不默认安装#官芳也不推荐这个接口com,有几个万年老bug不奇怪
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 03:29 , Processed in 0.186405 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表