乐筑天下

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

[编程交流] 活动X或VLISP命令

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:21:54 | 显示全部楼层 |阅读模式
昨天,我继续努力熟悉Active X模型。晚上,你们大多数人都看到我完成了一项任务,即使用标识句柄方法将一些dimtext覆盖插入到对象中。
 
今天,在进一步研究这个问题时,我遇到了Fixo提交的一个示例,它做了基本相同的事情,但没有使用vlax put属性。。。。etc方法。他这样做:
 
  1. (entmod (subst (cons 1 "<>CM")(assoc 1 elist) elist))

 
这段代码有比显示的更多的内容,我只是提出了代码中负责dimtext覆盖插入的部分。像AutoCAD中的许多事情一样,有多种方法可以完成某些事情,所以我的问题是entmode方法是否比Active X方法有任何优势。我说的是纯AutoCAD环境。我意识到Active X需要与其他应用程序(如Excel)进行接口,但当严格使用AutoCAD时,一种方法是否真正优于另一种方法。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:34:01 | 显示全部楼层
它取决于正在执行的例程的范围。特别是,如果例程不需要ActiveX属性和方法,那么使用普通AutoLISP函数将节省将实体名称转换为vla对象的开销。
 
考虑到我的硬件配置,我发现性能差异可以忽略不计,ActiveX更易于阅读。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:39:41 | 显示全部楼层
 
随着注释性对象的引入。有时entmod不再剪切它。
我同意Renderman关于避免将实体名称转换为vla对象的开销的说法,因此在选择时,最好使用vanilla,尤其是在使用eName时。
但是,根据您想要修改的内容,某些实体的行为会有所不同。如果我知道我将使用ActiveX属性,我会使用这样的东西
 
  1. (if (ssget '((0 . "ENTITY")))
  2. (progn
  3. (vlax-for itm (setq sel (vla-get-activeselectionset
  4. (vla-get-ActiveDocument (vlax-get-acad-object))))
  5. .......
  6. )
  7. (vla-delete sel)
  8. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:46:59 | 显示全部楼层
这一切都是关于为工作使用正确的工具。一些任务使用Vanilla更容易完成,其他任务使用Visual更容易(甚至可能只可能)。
 
作为快速比较,以下表格摘自Doug Broad的AU-2007讲义:
 
092210okl26w66dexi99xw.png
 
引用我之前的一篇帖子:
 
 
有很多原因。
 
LISP是为列表操作而设计的,并提供了许多函数。这意味着许多任务使用DXF数据列表要简洁得多,而且,您不需要使用变体和安全数组。
 
DXF结构允许您通过对ent*函数的单个调用来修改实体的任何或所有属性,而无需单独挖掘每个属性。此外,我发现使用Vanilla AutoLISP使程序在所有UCS平面中兼容要容易得多。
 
Vanilla AutoLISP函数(如entmake)通常比Visual LISP等效函数快得多。
 
除此之外,丰富的普通方法使您能够在不访问Visual LISP的情况下为系统编写程序。
</blockquote>
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:50:08 | 显示全部楼层
很好的帖子,李-这真的是关键-使用正确的工具来完成这项工作。
 
另外,您能否提供上述AU课程?我真的想保存一份。
 
干杯
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:55:47 | 显示全部楼层
 
谢谢RenderMan
 
 
当然,课程号是CP311-4
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:07:56 | 显示全部楼层
 
欢迎
 
 
有趣的是,我很难在AU的在线课程列表(内容全面)和谷歌搜索(令我惊讶)中找到这门课程。所以我改变了我的搜索字符串,实际上在TheSwamp上遇到了一个旧的(-er)线程,你(李)在那里引用了这个AU课程文档。事实上,你提供的链接今天已经死了,但我只需要找到源PDF。。。感谢我最喜欢的网站之一(图片已链接):
 
 
... 现在,我有了一个指向课程PDF的实时直接链接,我在这里分享了它(图片链接):
 

                               
登录/注册后可看大图
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:11:08 | 显示全部楼层
很棒的侦探作品Sherlock Renderman
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:19:51 | 显示全部楼层
 
你这么说真是太好了;我尽我所能。
 

                               
登录/注册后可看大图
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 09:22:37 | 显示全部楼层
关于命令是唯一受系统变量影响的东西,我同意这一点,但人们应该知道,在创建对象时,所有(命令、entmake(x)、vla add*)都受系统变量的影响,例如CECOLOR和CELTYPE。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 07:43 , Processed in 0.428942 second(s), 85 queries .

© 2020-2025 乐筑天下

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