明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 602|回复: 3

用Aardio二次开发,如何在CAD中填充图形?

[复制链接]
发表于 2022-8-8 16:19 | 显示全部楼层 |阅读模式
请教一下用Aardio做AutoCAD二次开发的大神!
我用Aardio想在AutoCAD中实现填充效果,但总是提示“对象数组无效”,不知哪里出了问题,代码如下:

  1. patternName = "ANSI31"
  2. PatternType = 0
  3. bAssociativity = True
  4. var hatchObj = cad.ActiveDocument.ModelSpace.AddHatch(PatternType, patternName, bAssociativity)
  5.               
  6. center = {0,0,0}
  7. radius = 1
  8. var outerLoop = cad.ActiveDocument.ModelSpace.AddCircle(center, radius)
  9.               
  10. hatchObj.AppendOuterLoop (outerLoop)

复制代码
参照VBA 手册编写,也一样报错,估计是“COM与aardio间的数据类型转换”的问题,但是不知如何修正,有知道的大神请指教一下,谢谢!



发表于 2022-8-19 00:35 | 显示全部楼层
本帖最后由 jacenhe 于 2022-8-19 00:37 编辑

outerLoop 是 IDispatch 对象数组,要这样定义:

var outerLoop = com.SafeArray(9/*_VT_DISPATCH*/);

完整示例:
import com.cad
var cad = com.cad();
cad.Visible =
true;  

var patternName = "ANSI31";
var patternType = 0 ;
var hatchObj = cad.ActiveDocument.ModelSpace.AddHatch(patternType, patternName, true);

var outerLoop = com.SafeArray(9/*_VT_DISPATCH*/);
outerLoop[1] = cad.ActiveDocument.ModelSpace.AddCircle({0;0;0}, 1);

hatchObj.AppendOuterLoop (outerLoop);
hatchObj.Evaluate();
cad.ActiveDocument.Regen(cad.acActiveViewport);
另外 aardio 首字母不需要大写。
回复 支持 0 反对 1

使用道具 举报

发表于 2022-8-9 11:57 | 显示全部楼层
center,radius 等很多都少了var定义吧,0,0,0应为0;0;0这样子吧。
 楼主| 发表于 2022-8-9 16:21 | 显示全部楼层
烟盒迷唇 发表于 2022-8-9 11:57
center,radius 等很多都少了var定义吧,0,0,0应为0;0;0这样子吧。

应该不是这个原因,请教了几个朋友,他们用其它写法也是出这样的提示。这是其中一个朋友写的,也是一样提示错误。

  1.    import com.acad;
  2.     var cad = com.acad();

  3.     patternName = "ANSI31";
  4.     PatternType = 0 ;
  5.     bAssociativity = true;
  6.     var hatchObj = cad.ActiveDocument.ModelSpace.AddHatch(PatternType, patternName, bAssociativity);

  7.         center = {0;0;0};
  8.         radius = 1;
  9.         var outerLoop={};
  10.         outerLoop[1] = cad.ActiveDocument.ModelSpace.AddCircle(center, radius);
  11.         outerLoop[2] = cad.ActiveDocument.ModelSpace.AddCircle({2;2;0}, radius);   
  12.         hatchObj.AppendOuterLoop (outerLoop);
  13.         hatchObj.Evaluate();
  14.         cad.ActiveDocument.Regen();
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 11:52 , Processed in 0.220452 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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