乐筑天下

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

[编程交流] 需要LISP例程来选择

[复制链接]

4

主题

17

帖子

13

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 09:11:29 | 显示全部楼层 |阅读模式
我有ACAD 2006,但我们刚刚买了2012。我做输电塔,需要为截面切割3D平面。我的结构化程序输出一个三维DXF文件,该文件由三维空间中的线组成。2006年,我能够使用UCS中的3个点手动执行此操作,以基于3个选定点生成UCS,然后我对属性进行了过滤,并选择了驻留在新平面上的线,但我无法使用过滤器手动获取线的起点和终点。在2012年,我似乎找不到如何进行过滤,所以我认为LISP例程可以做到这一点。
 
我需要的是能够在我的3D模型上选择3个点(所有线都没有实体,也没有文本),过滤这些线,并只选择那些起点Z坐标和终点Z坐标等于零的点(以便只选择驻留在我的新平面上的线),然后我想将选择集复制到一个新层,用它制作一个块,保存块,以便我可以将其粘贴到新图形。我不想从原始3D模型中删除线条,但可以将它们放在新的命名层上,以便我可以在以后关闭或隐藏它们。
 
运行lisp例程后,我将对这些线进行注释,并手动在其上放置一些尺寸标注。这将作为示意图发送给输电塔详图设计人员,告诉他角度尺寸、螺栓数量和角度中的孔数量。
 
任何帮助都将不胜感激。我附加了一个DXF的拉链,因为它太大了,所以你们可以看到我在用什么。
 
几年前我写了一个LISP例程,用来把数字圈起来,我在这里得到了一些帮助,但自20世纪80年代中期以来,我的自动LISP技能有所下降。
 
 
 
谢谢
 
乔治
穿越9x13 ng。拉链
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 09:52:48 | 显示全部楼层
可以通过设置ucs,然后选择所有实体来实现,但只能复制z值为0.0的实体
类似于需要使用ssget拾取多行(ssget“W”)窗口选项,然后使用sslength获取多少个对象
 
  1. (setq ss (ssget "W" ) ;window option
  2. (setq n (sslength ss)) ; for how many objects
  3. (repeat n
  4. (setq objname (ssname n))
  5. (setq tpp1 (entget objname)))
  6. (setq endpt1 (cdr (assoc 10 tpp1)))
  7. (setq zval (caddr endpt1))
  8. (if (= zval 0.0) do something here
  9. )
  10.    
回复

使用道具 举报

4

主题

17

帖子

13

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 10:37:52 | 显示全部楼层
我试图使用QSELECT和过滤器,但在使用3个点选择平面方面没有任何进展。我可以使用UCS并选择3个点,图标会指向我想要的点。当我尝试选择位于这个新平面上的线时,我没有得到预期的结果。选择新UCS时,ACAD是否将起点和终点坐标转换为新平面?当我为Z=0的线选择QSELECT时,我似乎没有选择平面上的线。
 
在BIGAL发布的代码中,我不知道足够的lisp来让它做任何事情。我确实在顶部添加了一个defun,但后来我被我的飞机和UCS卡住了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 05:25 , Processed in 0.541533 second(s), 69 queries .

© 2020-2025 乐筑天下

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