乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: Jef!

[编程交流] 三维实体的并集

[复制链接]

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 00:24:04 | 显示全部楼层
你好!
 
李,我刚刚度过了两周的假期(新年快乐!),请阅读您的回复!
这确实是一个相当大的。。脑力餐!Lisp,AutoLisp,ActiveX,伙计,你肯定有你的知识。
 
我非常喜欢看到用Autolisp或ActiveX编写的lisp,有时几行代码可以更有效地替换一堆lisp代码,但由于我明显不如你,我倾向于坚持使用我完全理解的代码,以便我可以对其进行塑造,以完全满足我的需要。我必须说,你有一种方法可以把代码写得如此清晰和简单,以至于我经常只要盯着它看几分钟就完全理解了。例如,在那个特定的示例中,我可以发现vlax invoke需要空间作为参数,您可以通过查看vla get activedocument的vlax get属性来获得它。。但我一直不明白为什么许多函数需要嵌套的vlax get acad对象。我可以看到删除cir1和cir2以及用于制作固体的区域的必要性,但我永远无法自己写这条线。当我发帖时,我会举一个简单的例子,通过不要求人们分析编码页面来更快地获得反馈和帮助。例如,我第一篇文章中的lisp将用于将许多实体合并在一起,并且根据用户的选择,数量会有所不同。这就是为什么我用了一段时间来抓取我的选择集;无论我要合并多少个实体,都可以使用它。我相信它也可以通过ActiveX实现,但必须百分之百依赖于你来编写它。
 
许多“真正的”Lisper在创建例程时往往避免使用命令,但我不知道确切的原因。也许是因为我作为一名绘图员有多年的经验,而不是作为一名lisper有几周的经验。如果这不是一个真正的lisper秘密,请随时告诉我!=)
 
也就是说,非常欢迎你加入我的帖子,分享一些想法。有一件事,我很喜欢看到像你这样的例子完全做到“从后面”,它总是有帮助的!当我看到你的foreach时,它提醒我差点忘了控制DELOBJ变量!
谢谢,干杯!
杰夫!
注:为了清楚地了解我与李的比较,我更新了我的头像。我希望你会喜欢!
...下一步=>三轮车
回复

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 00:29:25 | 显示全部楼层
嗯,我不能回答你们所有的问题,但从一个绘图员变成了另一个lisper,这里是。
 
 
这是因为当你看到沿着。。
  1. [font=Courier New](setq mydoct (vla-get-ActiveDocument (vlax-get-acad-object)))[/font]

 
这是编码器使用active-x制作指向“当前图形”的直接指针对象。
基本上,它是这样写的。。。将变量mydoct设置为等于autocad窗口中的活动文档。
现在,当active-x方法和特性应用于该指针“mydoct”时,它们将出现在打开的autocad图形中,即当前图形中。99%的情况下,这是您希望在任何给定的lisp例程中工作的地方,因此从一个例程到另一个例程都会看到这样的调用。
当然,您可以制作一个没有这个指针的active-x,但我希望它是某种后台操作。
 
 
主要原因是,在autocad版本中,您使用的任何给定命令在其他语言和地区中都有不同的“命令”名称-在世界各地,命令“line”是命令“linea”!
这正是你在lisp中很少看到裸体(命令“dothis”)的原因。至少人们使用一些内置的autolisp功能使他们的程序普遍适用。
我打赌你可能已经看到了(命令“_.line”),下划线和句点在这里确实起了很大作用。
我不会只是链接到这个博客,我会重新发布相关部分。。。
 
摘自:http://adndevblog.typepad.com/autocad/2012/10/invoking-commands-in-localized-versions.html
 
嗯!
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 00:32:19 | 显示全部楼层
 
http://cadpanacea.com/node/107
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 00:36:00 | 显示全部楼层
我有点期待一个像“速度”这样的答案,非常有趣的链接信息,谢谢。
 
 
我使用了许多LISP来添加对象(硬件、通道/高速钢/管道轮廓等)。回想起来,这些LISP绘制的最大实体数可能是30-50。虽然可以看到更大范围的影响,但用4种不同的方式绘制1000行(command/entmake/vla addline/vlax invoke'addline)
**rkmcswain在2010年3月发布的结果**
  1. Command: 0.797018
  2. Entmake: 0.046992
  3. VLA1:0.18700361
  4. VLA2: 0.12500435

我做了同样的测试,画了1000行
  1. 4

从计算结果来看,用我现在的电脑,用entmake而不是绘图来绘制50个实体(这已经远远超过我可能会使用的数量)将节省我的时间。00175秒,我必须使用该例程571次才能节省1秒=)
 
 
很高兴知道,entmake的速度大约是使用command的15倍,因为最终,由于我计划使用扩展实体数据,我迟早要深入研究。使用entmake和create处理扩展数据比通过命令创建要简单得多,并且必须修改它以附加扩展数据。。。我想。。
 
 
我习惯于操作Autocad,对lisps还比较陌生。现在,我使用命令,学习“周围”的函数,我肯定想更深入。当我创建时,我几乎只使用“我会这样做”之类的警报来创建全局lisp结构,然后为函数生成警报,我绘制基本形状,然后优化以绘制真实形状,然后再次优化以获得动态输入而不是静态输入,并一次只执行一步。我可能会想更改所有可以从后面创建实体的命令,但到目前为止,我在搜索entmake多边形时没有任何运气。
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 00:39:42 | 显示全部楼层
请随意评论我的编码,我刚刚把我的项目带到下一步。长话短说,我制作了许多实体,创建了一个选择集,然后将它们合并。(我已经将实体创建恢复到本线程第一篇文章中的基本示例,以简化可视化过程。)我简化了选择集的生成过程,并将其作为子命令进行重用),我想得到一些关于它的评论!这就是它在之前发布的简单(更新)例程中的使用方式
如果我使用不当,条件主要是给我反馈。
你觉得怎么样?对于像我这样的新手来说,这是一件很好的事情
我设置了所有变量,然后进行建模,这样子命令SelSetStart和UseSelSet之间就可以进行绘制/拉伸了,但是。。我应该对使用Undo的用户感到震惊吗?迫不及待地想阅读反馈/评论!
 
干杯
杰夫!
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:42:05 | 显示全部楼层
杰夫!
 
使用“command”或“vl cmdf”完全可以,特别是对于那些快速litlle例程。
Autolisp一开始是用来取代宏的。这样你可以模仿一个绘图员训练
当然。
 
只要养成用下划线前缀的习惯,其他人就可以使用你的作品。
 
当你需要速度时,首先看看你是否能用entmake做到。
 
Activex确实具有一些用Vanilla Autolisp无法实现或难以实现的功能。
你会喜欢曲线函数。数组在activex中可用,在Vanilla等中不可用。
 
主要的一点是,你有很多工具可供使用,你可以使用这些工具来完成这项工作。
 
祝贺在你的日常生活中。
 
ymg公司
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:47:13 | 显示全部楼层
 
谢谢你,杰夫但你给了我太多的信任,不幸的是,我不精通功能强大得多的通用LISP,但只熟悉AutoLISP和Visual LISP(含ActiveX)方言。
 
你看,LISP指的是一系列编程语言,每种语言都被称为LISP的“方言”。AutoLISP和Visual LISP只是LISP的两种方言,是一种限制性很强的方言,适合与AutoCAD一起使用。正如我所提到的,有比通用LISP或Scheme更强大的方言,它们比专业的AutoLISP方言更普遍、更主流。
 
 
谢谢-我认为好的代码格式也会增加代码的可读性,就我个人而言,我努力保持代码格式的标准(多年来一直在变化)。
 
 
因为vlax get acad object函数检索指向应用程序对象的指针,该对象是AutoCAD ActiveX对象模型(也称为组件对象模型-vl load COM中的“COM”)的根。
 
然后,打开的图形集位于对象模型层次结构中应用程序对象的下方,并驻留在文档集合中,文档集合是应用程序对象的一个属性。不过,为了方便起见,由于大多数操作始终在当前图形上执行,而不是从文档集合中检索此对象,因此可以通过activedocument属性直接从应用程序对象中检索指向活动文档对象的指针,如我的代码中所示。
 
ActiveX文档对象然后包含更多属性,允许您进一步钻取
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 21:08 , Processed in 0.970739 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表