乐筑天下

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

[编程交流] 结合2个LISP选择最后一个

[复制链接]

28

主题

76

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 09:13:19 | 显示全部楼层 |阅读模式
大家好,
我在这个网站上找到了一个lisp(loo.lsp),它允许我选择最后绘制的n个实体。我编写了自己的lisp(curve.lisp)来绘制管道对象-曲线。我想插入loo。曲线中的lsp。lsp能够移动使用曲线绘制的所有对象。lsp-(13个对象、直线和圆弧-在本例中)。需要帮忙吗?
 
谢谢
 
 
 
 
曲线。LSP
 
 
(defun c:曲线()
(setq DIA(getreal“\nDN:”))
(setq RC(getreal“\nRadius:”))
(SETQ UNGHI(getreal“\ nAngle:”))
(SETQ ANG(/(*UNGHI pi)180))
(SETQ ANG/2(*ANG 0.5))
(defun DTR(deg)(*deg(/PI 180)))
 
(if(=直径50)(setq di 0.0603))
(if(=直径80)(setq di 0.0889))
(if(=直径100)(setq di 0.1143))
(if(=直径150)(setq di 0.1683))
(if(=直径200)(setq di 0.2190))
(if(=直径250)(setq di 0.273))
(if(=直径300)(setq di 0.3239))
(if(=直径350)(setq di 0.3556))
(if(=直径400)(setq di 0.4064))
(if(=直径450)(setq di 0.4572))
(if(=直径500)(setq di 0.508))
(if(=直径600)(setq di 0.6096))
(if(=直径700)(setq di 0.710))
(if(=直径800)(setq di 0.813))
(if(=直径900)(setq di 0.914))
(setq PCEN(getpoint“\n中心点:”)
(SETQ PC1(极性PCEN(DTR 270)(+RC(/DI 2)))
(SETQ PC2(极性PC1(DTR 180)0.5))
(SETQ PC3(极性PC2(DTR 90)DI))
(SETQ PC4(极性PC1(DTR 90)DI))
(SETQ PCI1(极性PC1(DTR 90)(/DI 2)))
 
(SETQ DPCIPCI1(*RC(/(SIN ANG/2)(COS ANG/2)))
(setq PCI(极性PCI1(DTR 0)DPCIPCI1))
(setq PCI2(极性PCI(DTR UNGHI)DPCIPCI1))
 
(setq PC5(极性PCI2(DTR(+270 UNGHI))(/DI 2)))
(setq PC6(极性PC5(DTR UNGHI)0.5))
(setq PC7(极性PC6(DTR(+90 UNGHI))DI))
(setq PC8(极性PCI2(DTR(+90 UNGHI))(/DI 2)))
(SETQ PCI11(极性PCI1(DTR 180)0.5))
(SETQ PCI22(极性PCI2(DTR UNGHI)0.5))
(命令“CLAYER”“CONTUR”)
(命令“-COLOR”“BYLAYER”“”)
(命令行“PC1 PC2 PC3 PC4 PC1”)
(命令行“PC5 PC6 PC7 PC8 PC5”)
(命令“ARC”“C”PCEN PC4 PC8”)
(命令“ARC”“C”PCEN PC1 PC5”)
 
(命令“CLAYER”“AXE”)
(命令“-COLOR”“BYLAYER”“”)
(命令“ARC”“C”PCEN PCI1 PCI2“”)
(命令行“PCI11 PCI1”)
(命令行“PCI2 PCI22”)
 
 
 
;(命令“loo”13)。。。。。????????
;(命令“move”“p”。。。。。。。???????????
(普林斯)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
鲁。LSP
(defun lastn(INT2/SS2-SSL2);定义函数以获取1个参数
(setq SS2(ssadd));将SS2设置为空选择集
(重复INT2;重复INT2次
(if(entlast)
(程序
(ssadd(entlast)SS2);将最后一个未删除的对象添加到选择集
(entdel(entlast));删除最后一个未删除的对象
)
)
)
(setq SSL2(1-(sslength SS2));将SSL2设置为小于选择集大小的1
(而(>=SSL2 0);当SSL2大于或等于零时
(entdel(ssname SS2 SSL2));取消删除选择集中的SSL2'th对象
(setq SSL2(1-SSL2));减量SL2
)
SS2;将选择集返回到调用函数
)                                                        ;结束(lastn)函数
(defun C:loo(/COUNT2);定义函数
;将COUNT2设置为对象数
(setq COUNT2(getint“\n输入对象数:”)
(如果(=0(getvar“CMDACTIVE”));如果没有其他命令处于活动状态
(程序;其他
(命令“_SELECT”(lastn COUNT2)”;运行SELECT命令和(lastn)
(普林斯);悄悄退出
)
(lastn COUNT2);带参数的call(lastn)函数
)
)
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:23:54 | 显示全部楼层
Flopo-
 
首先,请记住使用
在运行代码之前键入StoreLast。然后键入CheckLast,它会显示创建了多少个实体并将其选中。
 
顺便说一句,我不久前做过类似的东西。这叫做“结果选择”。附件。它需要在开始时加载(我通常只是通过acaddoc.lsp或MNL文件或任何方式加载)。然后,您应该有一个新的命令结果,可以通过在单引号的结果前面加前缀来透明地发出该结果。这允许您选择在前5个命令中创建的实体。如果需要更多,请修改存储在lisp第19行的$Result-Length变量中的数字。
 
编辑:我真的需要开始研究lisp变量/函数命名的一些标准化!当我注意到$前缀时,我才意识到多年来我的“偏好”是如何自我调整的
选择结果。lsp
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:40:44 | 显示全部楼层
Flopo,我宁愿用这个帖子回复,也不愿用PM。也许其他人也可以学习。
我选择了保留最后一个想法。select result是一段更为comlpex的代码,它可以与acad中的任何命令一起工作——在lisp例程中使用起来并不那么简单。
 
顺便说一句,我还想把你的变量添加为局部变量。。。但在第一轮之后就放弃了。本地化lisp变量总是一个好主意。尽管有这么多人,这会让人痛苦!你能试着重用代码中的一些变量而不是每次都创建一个新的吗?它还可能有助于减少代码的RAM需求。
 
编辑:只是为了对自己学究气。。。ssadd不需要设置。它实际上修改了选择集,而不是创建一个新的选择集。因此,这应该执行完全相同的操作:
这里我再次用这些前缀和后缀!现在是下划线!世界跆拳道联盟?我想我的个性分裂了!最近有人听到我用不同的声音说话吗?
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:48:03 | 显示全部楼层
谢谢,太好了!
回复

使用道具 举报

28

主题

76

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 09:55:04 | 显示全部楼层
另一个建议是,你可能会编写更多涉及管道直径的例程,我会将第二个直径大小拉到一个单独的defun,以这种方式自动加载,任何未来的例程都可以利用它,同样,如果你有新的管道,你只需添加到一个例程。例如450p 450s 450g塑料、钢、玻璃reo。
 
(getnewdia dia)返回DI
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 10:04:13 | 显示全部楼层
是的,当你更多地使用这些defuns时,你会注意到你不断地重复输入相同的东西。这通常是开始创建一些库函数的好时机,因此您可以简单地调用它们,而不是重写/复制粘贴。
 
不过我很高兴它对你有用。快乐的Lisp程序!
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 10:14:03 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:15 , Processed in 1.002105 second(s), 66 queries .

© 2020-2025 乐筑天下

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