乐筑天下

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

[编程交流] 查找块插入点

[复制链接]

13

主题

46

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 15:46:59 | 显示全部楼层 |阅读模式
您好,我需要一个lisp-rutine,可以找到一个块(绘图头)插入点,并在同一点插入另一个块。我不认为这可能是一个长口吃。我在网上到处找了找。我还看到了一个最近的lisp-rutine,用户必须选择块以用户选择或给定的角度旋转块。我需要一些思考,可以找到块插入点,只需寻找块名,并在第一个块的相同插入点插入另一个块。
 
Thx i前进。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:51:43 | 显示全部楼层
查找SSGET帮助它允许“过滤器”基本上使用过滤器搜索所有块并返回名为xyz的块
 
执行(setq ans(entsel))选择块,然后(entget(car ans))您现在将看到所有已知的dxf代码,您需要使用(0。“插入”)和(2。“您的块名”)也可能是(410。“布局1”)当前布局,提示还可以尝试“模型”。插入点在我拾取的块中为(10 0.0 0.0 0.0),
 
  1. (setq ans (entsel))
  2. (setq en (entget (car ans)))
  3. (setq inspt (cdr (assoc 10 en)))
  4. (princ inspt)
  5. ; (car inspt) is X
  6. ; (cadr inspt) is Y
  7. ;(caddr inspt) is Z
  8. ;(ssget "X"  (0 . "INSERT")(2 . "your blockname"))
  9. ;warning if more than once will return all
回复

使用道具 举报

13

主题

46

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 15:55:11 | 显示全部楼层
 
 
我这个程序我需要选择一个块,它返回一个插入点。我要搜索的是一个rutine,它根据特定的块名称查找块,并找到这个块插入点这个插入点它必须用来插入另一个块,而不是第一个块。
我读过jefferypsanders的SSGET。com,还有关于过滤器,但据我所知,我必须使用SSGET“X”并过滤掉块名,但当它可以过滤掉的唯一名称是层名时,这怎么可能呢?
 
我有大约3公斤的画,我有一个“竣工”的标志,这就是为什么我问,并希望我可以在脚本批使用芦丁。
 
提前谢谢你。
 
埃尔弗特
回复

使用道具 举报

13

主题

46

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 15:57:39 | 显示全部楼层
 
我环顾了一下afralisp,发现它可能是我问题的解决方案,但我无法让它正常工作,也许有人能帮我。
 
我试图让程序返回我告诉它的块名称的插入点。但我犯了一个错误;错误:功能错误:(2.“dwg”);dwg是我的测试块名称。
 
任何帮助都感谢。。。thx提前。。。。一个人怎么会犯错误。。。埃尔弗特!
回复

使用道具 举报

9

主题

167

帖子

163

银币

初来乍到

Rank: 1

铜币
43
发表于 2022-7-5 16:00:19 | 显示全部楼层
如果图形中只有一个块实例,这将为您提供其插入点:
 
  1. (defun c:asbuilt2 (/ a b c)
  2. (setq        a (ssget "_X" '((0 . "INSERT") (2 . "block-name")))
  3. b (sslength a)
  4. )
  5. (repeat b
  6.    (setq b (1- b)
  7.   c (append c (cdr (assoc 10 (entget (ssname a b)))))
  8.    )
  9. )
  10. (princ c)
  11. (princ)
  12. )

 
如果有多个插入点,它将列出所有插入点。
回复

使用道具 举报

13

主题

46

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 16:03:20 | 显示全部楼层
 
Thx做到了。我已经完成了这个计划。非常感谢你。我将尝试对其进行微调,然后稍后发布。
回复

使用道具 举报

13

主题

46

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 16:06:43 | 显示全部楼层
给你!还是Lisp程序员的新手。。。。。。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 16:11:34 | 显示全部楼层
埃尔弗特,
 
确保考虑ANS=nil(在C:Asbuilt1中)或A=nil(在C:asbuilt2中)的可能性。
 
也许IF语句可以帮助您缓解潜在错误-例如:
 
  1. (defun c:[color=red]FOO[/color]  (/ ss)
  2. (if (and (setq ss (ssget ":S:E" '((0 . "INSERT"))))
  3.           (findfile "ASBUILT.dwg"))
  4.    (command "._-insert"
  5.             "ASBUILT"
  6.             (cdr (assoc 10 (entget (ssname ss 0))))
  7.             1.0
  8.             1.0
  9.             0.0)
  10.    (cond (ss (prompt "\n** "ASBUILT.dwg" cannot be found ** "))
  11.          ((prompt "\n** Nothing selected ** "))))
  12. (princ))

 
**编辑添加-我个人尝试在插入块时明确定义比例和旋转,以避免潜在的错误。
 
HTH公司
回复

使用道具 举报

13

主题

46

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-5 16:13:47 | 显示全部楼层
谢谢。我会调查的。我会尽快发布一个新的代码来考虑。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 16:17:21 | 显示全部楼层
不客气。。。我很高兴你发现我的帖子很有用。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 00:00 , Processed in 0.810549 second(s), 72 queries .

© 2020-2025 乐筑天下

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