乐筑天下

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

[编程交流] 连接2个命令

[复制链接]

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:23:45 | 显示全部楼层 |阅读模式
好的,这看起来很简单。我该如何连接这两个命令,这样无论直线是直线还是pline。谢谢
  1. [size=3][font=Calibri](defun c:heal2  (/ block ll ur p1 p2)[/font][/size]
  2. [size=3][font=Calibri]     (vl-load-com)[/font][/size]
  3. [size=3][font=Calibri]     (setq block (car (entsel "\nSelect Block:")))[/font][/size]
  4. [size=3][font=Calibri]     (vla-getboundingbox (vlax-ename->vla-object block) 'll 'ur)[/font][/size]
  5. [size=3][font=Calibri]     (command "_.erase" block "")[/font][/size]
  6. [size=3][font=Calibri]     (command[/font][/size]
  7. [size=3][font=Calibri]           "_.pedit"[/font][/size]
  8. [size=3][font=Calibri]           "_m"[/font][/size]
  9. [size=3][font=Calibri]           (ssget "C"[/font][/size]
  10. [size=3][font=Calibri]                  (setq p1 (vlax-safearray->list ll))[/font][/size]
  11. [size=3][font=Calibri]                  (setq p2 (vlax-safearray->list ur)))[/font][/size]
  12. [size=3][font=Calibri]           ""[/font][/size]
  13. [size=3][font=Calibri]           "_join" "_Joint" "_Both"[/font][/size]
  14. [size=3][font=Calibri]           (distance p1 p2)[/font][/size]
  15. [size=3][font=Calibri]           "")[/font][/size]
  16. [size=3][font=Calibri]     (princ)[/font][/size]
  17. [size=3][font=Calibri]     )[/font][/size]
  1. [size=3][font=Calibri](defun c:HEAL (/ block ll ur objecttojoin)[/font][/size]
  2. [size=3][font=Calibri]     (vl-load-com)[/font][/size]
  3. [size=3][font=Calibri]     (setq block (car (entsel "\nSelect Block:")))[/font][/size]
  4. [size=3][font=Calibri]     (vla-getboundingbox (vlax-ename->vla-object block) 'll 'ur)[/font][/size]
  5. [size=3][font=Calibri]     (command "_.erase" block "")[/font][/size]
  6. [size=3][font=Calibri]     (setq objecttojoin[/font][/size]
  7. [size=3][font=Calibri]                (ssget "C"[/font][/size]
  8. [size=3][font=Calibri]                       (vlax-safearray->list ll)[/font][/size]
  9. [size=3][font=Calibri]                       (vlax-safearray->list ur)))[/font][/size]
  10. [size=3][font=Calibri]     (command[/font][/size]
  11. [size=3][font=Calibri]           "_.join"[/font][/size]
  12. [size=3][font=Calibri]           (ssname objecttojoin 0)[/font][/size]
  13. [size=3][font=Calibri]           (ssname objecttojoin 1)[/font][/size]
  14. [size=3][font=Calibri]           "")[/font][/size]
  15. [size=3][font=Calibri]     )[/font][/size]
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:37:08 | 显示全部楼层
如果您不介意将线转换为PLINE,那么如果将PEDITACEPT设置为1,则可以同时使用heal2
 
  1. (defun c:heal2  (/ block pea ll ur p1 p2)
  2.     (vl-load-com)
  3. [color="blue"]     (setq pea (getvar 'Peditaccept))  
  4.     (setvar 'PeditAccept 1)[/color]
  5.     (setq block (car (entsel "\nSelect Block:")))
  6.     (vla-getboundingbox (vlax-ename->vla-object block) 'll 'ur)
  7.     (command "_.erase" block "")
  8.     (command
  9.           "_.pedit"
  10.           "_m"
  11.           (ssget "C"
  12.                  (setq p1 (vlax-safearray->list ll))
  13.                  (setq p2 (vlax-safearray->list ur)))
  14.           ""
  15.           "_join" "_Joint" "_Both"
  16.           (distance p1 p2)
  17.           "")
  18.    [b][color="blue"] (setvar 'PeditAccept pea)[/color][/b]
  19.     (princ)
  20.     )
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:40:32 | 显示全部楼层
首先感谢pBe的关注。
如果我有选择的话,我想把普林斯转换成直线连接。但我不应该添加一个:
  1. (cond
  2. ((= $ent2 line)(c:heal))
  3. ((= $ent2 lwpolyline)(c:heal2))
  4. )

$ent2将是选中的挂起的直线或lwpolyline。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:50:30 | 显示全部楼层
 
它要么你分解选择,把它变成线,然后加入或使用heal2然后分解。
 
 
  1. (defun c:heald  (/ pea block ll ur objs p1 p2)
  2.     (vl-load-com)
  3. (setq pea (getvar 'Peditaccept))  
  4.     (setvar 'PeditAccept 1)  
  5.     (setq block (car (entsel "\nSelect Block:")))
  6.     (vla-getboundingbox (vlax-ename->vla-object block) 'll 'ur)
  7.     (command "_.erase" block "")
  8.    [color="blue"][b] (setq objs[/b][/color] (ssget "C"
  9.                  (setq p1 (vlax-safearray->list ll))
  10.                  (setq p2 (vlax-safearray->list ur))))
  11. (if [b][color="blue"](eq (cdr (assoc 0 (entget (ssname objs 0)))) "LWPOLYLINE")[/color][/b]          
  12.     (command "_.pedit" "_m" [b][color="blue"]objs[/color][/b] "" "_join" "_Joint" "_Both"
  13.           (distance p1 p2) "")
  14.     (command "_.join" (ssname [color="blue"][b]objs[/b][/color] 0) (ssname [b][color="blue"]objs [/color][/b]1) "")
  15.     )
  16. (setvar 'PeditAccept pea)
  17. (princ)
  18. )
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 07:55:15 | 显示全部楼层
谢谢pBe。这很有效。我知道你是怎么做到的,但我知道我只需要弄清楚你是怎么想到的。我要看看我是否能想出如何过滤出只选择块。如果我这样做,我会重新发布。再次感谢你的帮助。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:01:47 | 显示全部楼层
 
对你很好,希望你能从中学习。毕竟这是你的代码。
 
 
如果你的意思是一次多选。是的,可以做到。你肯定会自己解决的。随时向我们通报
 
干杯
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:09:14 | 显示全部楼层
好的,我得到了,所以我只能选择一个街区。但如果我选择多个区块,它只对一个区块有效,而忽略其他区块。我该如何使其对选择集中的每个项目运行?谢谢
 
  1. (defun c:ee (/ pea $blk block ll ur objs p1 p2)
  2. (vl-load-com)
  3. (setq pea (getvar 'Peditaccept))
  4. (setvar 'PeditAccept 1)
  5. (setq $blk (ssget '((0 . "insert"))))
  6. (setq block (ssname $blk 0))
  7. (vla-getboundingbox (vlax-ename->vla-object block) 'll 'ur)
  8. (command "_.erase" block "")
  9. (setq objs (ssget "C"
  10.      (setq p1 (vlax-safearray->list ll))
  11.      (setq p2 (vlax-safearray->list ur))
  12.      )
  13. )
  14. (if (eq (cdr (assoc 0 (entget (ssname objs 0)))) "LWPOLYLINE")
  15.    (command "_.pedit"
  16.      "_m"
  17.      objs
  18.      ""
  19.      "_join"
  20.      "_Joint"
  21.      "_Both"
  22.      (distance p1 p2)
  23.      ""
  24.    )
  25.    (command "_.join" (ssname objs 0) (ssname objs 1) "")
  26. )
  27. (setvar 'PeditAccept pea)
  28. (princ)
  29. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:23:24 | 显示全部楼层
让我们试试
 
  1. (defun c:hint ()
  2.   (if        (setq ss (ssget '((0 . "INSERT"))))
  3.                   (repeat (setq i (sslength ss))
  4.                   (setq pt  (cdr
  5.                          (assoc  10
  6.                            (entget
  7.                              (setq e (ssname ss (setq i (1- i))))
  8.                            ))))
  9.                   (command "_rotate" e "" "_non" pt "180")
  10.           )
  11.     )(princ)
  12.   )
  13. Scroll down when you're ready
  14. |||
  15. |||
  16. |||
  17. \    /
  18. \/
  19. (defun c:ee (/ pea $blk block i ll ur objs p1 p2)
  20. (vl-load-com)
  21. (setq pea (getvar 'Peditaccept))
  22. (setvar 'PeditAccept 1)
  23. [color="blue"](if [/color](setq $blk (ssget '((0 . "insert"))))
  24. [color="blue"] (repeat (setq i (sslength $blk))
  25.             (setq e (ssname  $blk (setq i (1- i))))[/color]
  26.           (vla-getboundingbox (vlax-ename->vla-object e) 'll 'ur)
  27.             [color="blue"](entdel e)[/color]
  28.   (setq objs (ssget "C"
  29.       (setq p1 (vlax-safearray->list ll))
  30.       (setq p2 (vlax-safearray->list ur))
  31.       )
  32.   )
  33. (if (eq (cdr (assoc 0 (entget (ssname objs 0)))) "LWPOLYLINE")
  34.           (command "_.pedit"  "_m"  objs
  35.                    ""  "_join" "_Joint"
  36.                    "_Both" (distance p1 p2)
  37.                    "" )
  38.           (command "_.join" (ssname objs 0) (ssname objs 1) "")
  39.         [color="blue"])
  40.     )
  41.    (princ "\nNo Blocks Selected")
  42.    )[/color]
  43.   (setvar 'PeditAccept pea)
  44.   (princ)
  45. )

 
看看你能不能把它作为参考。
这毕竟是CAD导师
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-6 08:24:17 | 显示全部楼层
嘿,pbe,我想我不太明白为什么我们需要我们sslength并得到块的插入点。但它确实有效。非常感谢您抽出时间。
 
  1. (defun c:ee (/ pea $blk block ll ur objs p1 p2)
  2. (vl-load-com)
  3. (setq pea (getvar 'Peditaccept))
  4. (setvar 'PeditAccept 1)
  5. (if (setq $blk (ssget '((0 . "insert"))))
  6.   (repeat (setq i (sslength $blk))
  7.    (setq pt (cdr
  8.      (assoc 10
  9.       (entget
  10.        (setq block (ssname $blk (setq i (1- i))))
  11.      ))))
  12.      (vla-getboundingbox (vlax-ename->vla-object block) 'll 'ur)
  13.      (command "_.erase" block "")
  14.      (setq objs (ssget "C"
  15.   (setq p1 (vlax-safearray->list ll))
  16.   (setq p2 (vlax-safearray->list ur))
  17.   )
  18.      )
  19.      (if (eq (cdr (assoc 0 (entget (ssname objs 0)))) "LWPOLYLINE")
  20. (command "_.pedit"
  21.   "_m"
  22.   objs
  23.   ""
  24.   "_join"
  25.   "_Joint"
  26.   "_Both"
  27.   (distance p1 p2)
  28.   ""
  29. )
  30. (command "_.join" (ssname objs 0) (ssname objs 1) "")
  31.      )
  32.    );repeat
  33.   );if
  34. (setvar 'PeditAccept pea)
  35. (princ)
  36. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:26 , Processed in 0.492175 second(s), 81 queries .

© 2020-2025 乐筑天下

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