乐筑天下

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

[编程交流] 找到一个块并将其发送到

[复制链接]

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 15:48:55 | 显示全部楼层 |阅读模式
我正在尝试捕捉层“0”上的项目。我首先关闭了除“0”之外的所有层,但我还不知道如何编码,所以我手动完成了。我在那个层上只剩下一个物体,它是一个块。我的目标是打开一个区域,捕捉对象并将其发送到另一个层(在本例中,层名称为“FTG IsoCont”)。我已经运行了以下lisp,它无法找到块。
 
有人能提出解决方案吗?
 
  1. ; Changes selected objects to Layer from Prompt
  2. ; Changes selected objects to Layer FTG-IsoCont
  3. (defun c:SetWinToLayerFTG-IsoCont ()
  4. (if (setq ss1 (ssget "_C" '(0.625 1.95) '(7.15 10.45) '((0 . "FTG-IsoCont"))))
  5. (command "change" ss1 "" "p" "la" "FTG-IsoCont" "")
  6. (alert "No Objects Found")
  7. );; End of if
  8. (princ)
  9.    )
Greg
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:55:00 | 显示全部楼层
图层名称过滤器需要使用组码8:
  1. (setq ss1 (ssget "_C" '(0.625 1.95) '(7.15 10.45) '((0 . "insert") (8 . "FTG-IsoCont"))))
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:01:26 | 显示全部楼层
 
谢谢你的代码片段。
 
但遗憾的是,它没有起作用。
 
下面是块的图像和一些属性数据。
 
 

                               
登录/注册后可看大图

 
 
格雷格
164902krq89nmw97iqa9eq.jpg
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:04:48 | 显示全部楼层
 
谢谢,但代码不起作用。
 
我试过多次运行它,然后重新加载,但它仍然没有动。
 
格雷格
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:08:19 | 显示全部楼层
测试图纸会有所帮助。
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:14:44 | 显示全部楼层
 
你能给我发邮件吗?我今天刚加入这个团队,我认为我还没有足够数量的职位需要进行审查。
 
格雷格
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:19:04 | 显示全部楼层
请仔细阅读您的帖子,如果您想使用ssget选择第0层上的项目,请使用此选项。
  1. (setq ss1 (ssget "_C" '(0.625 1.95) '(7.15 10.45) '([b](8 . "0")[/b])))

 
无需关闭图层。。这就是ssget过滤器的部分优点。
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:24:45 | 显示全部楼层
 
那一个也不起作用。
 
我正在尝试上传一个。图纸。
 
格雷格
测验对象图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:27:12 | 显示全部楼层
为什么你不只是找到所有?你也可以添加(cons 2 Blkname)。对于我来说,选择一个块,获取所有的东西,如名称和图层,然后创建选择集。
 
  1. ; Changes selected objects to Layer from Prompt
  2. ; Changes selected objects to Layer FTG-IsoCon
  3. (defun c:chglay-0 ( / obj ss lay blkname)
  4. (setq obj (vlax-ename->vla-object (car (entsel "\nPick "))))
  5. (setq lay (vla-get-layer obj))
  6. (if (= (vla-get-ObjectName obj) "AcDbBlockReference")
  7. (progn
  8. (setq blkname (vla-get-name obj))
  9. (setq ss (ssget "x" (list (cons 0 "insert")(cons 8 lay)(cons 2 blkname))))
  10. )
  11. (setq ss (ssget "x" (list (cons 0 "insert")(cons 8 lay))))
  12. )
  13. (command "CHprop" ss "" "la" "0" "")
  14. )
回复

使用道具 举报

35

主题

145

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 16:32:52 | 显示全部楼层
 
BIGAL这对我不起作用,至少它是以这种形式编码的。我需要它来自动捕捉特定大小窗口中的对象。主计划将此代码编织到一个更大的例程中,这样当打开图形时,它会自动清理,这样用户就不必提供输入。
 
也许只有几行需要修改?
 
格雷格
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:08 , Processed in 0.440315 second(s), 74 queries .

© 2020-2025 乐筑天下

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