乐筑天下

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

[编程交流] 实体内的复制块(

[复制链接]

26

主题

145

帖子

122

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 22:17:39 | 显示全部楼层 |阅读模式
实体内的复制块(bcopy)
 
  1. (defun c:bcopy ()(c:blkssc)) ;;
  2. (defun c:blkssc (/ *ERROR* *MYERR BLKN E EEE NPT OLDERR PAUSE SS SS2 SSB SSN SSR SSS SSS2 X ssx)
  3. (princ "\n bcopy=Copy block within the entity  by lxx.2008.2")
  4. (defun *myerr (msg)(if sss2 (progn(command ".undo" "e")(command ".u")))(setq *error* olderr)(princ))
  5. (setq olderr *error*
  6. *error* *myerr)
  7. (princ "\n Choose the block:")
  8. (if (setq ss (ssget '((0 . "INSERT"))))
  9.    (progn
  10.      (setq e  (ssname ss 0)
  11.     blkn (cdr (assoc 2 (entget e)))
  12.      )
  13.      (command ".undo" "be")
  14.      (setvar "qaflags" 1)
  15.      (command ".explode" ss "")
  16.      (setq ss2 (ssget "p"))
  17.      (setq sss2 (xss2lst ss2))
  18.      (mapcar '(lambda (x) (redraw x 3)) sss2)
  19.      (princ "\n Choose the entity from block:")
  20.      (while (setq ssa (ssget ":S"))
  21. (mapcar '(lambda (x)
  22.     (if (and (ssmemb x ss2) (member x ssr))
  23.       (progn (redraw x 3)
  24.       (setq ssr (vl-remove x ssr))
  25.       )
  26.       (if (ssmemb x ss2)
  27.         (progn (redraw x 4)
  28.         (setq ssr (cons x ssr))
  29.         )
  30.       )
  31.     )
  32.   )
  33. (xss2lst ssa)
  34. )
  35.      )
  36.      (setq ssx (mapcar 'entget ssr))
  37.      (command ".u")
  38. ;;;      (setq ;npt (getpoint "\n Basic point:")
  39. ;;;     ;npt2 (getpoint "\n Copy to:")
  40. ;;;     )
  41.      (setq eee (entlast)
  42.     ssn (ssadd))
  43.      (mapcar 'entmake ssx)
  44. ;;;      (setq eee(entnext eee))
  45.      (while (setq eee(entnext eee))
  46. (ssadd eee ssn)
  47.      )
  48. ;;;      (command ".move" ssn "" npt pause)
  49. ;;;      (setq rlst (mapcar '(lambda (x) (vl-position x sss2)) ssr))
  50. ;;;      (setq i -1)
  51. ;;;      (vlax-for x (vla-item
  52. ;;;      (vla-get-blocks
  53. ;;;        (vla-get-activedocument (vlax-get-acad-object))
  54. ;;;      )
  55. ;;;      blkn
  56. ;;;    )
  57. ;;; (setq i (1+ i))
  58. ;;; (if (member i rlst)
  59. ;;;   (vla-delete x)
  60. ;;; )
  61. ;;;      )
  62. ;;;      (setq ssb (ssget "x" (list (cons 0 "INSERT") (cons 2 blkn)))
  63. ;;;     sssb (xss2lst ssb)
  64. ;;;      )
  65. ;;;      (mapcar 'entupd sssb)
  66.      (command ".undo" "e")
  67. ;;;      ssb
  68.      
  69.    )
  70. )
  71. (if ssn
  72.    ;(sssetfirst ssn ssn)
  73.    (command ".move" ssn "")
  74.    )
  75. )
  76. ;; v1.1
  77. (defun xss2lst (ss / i lst)
  78. (setq i (sslength ss))
  79. (repeat i
  80.    (setq lst (cons (ssname ss (setq i (1- i))) lst))
  81. )
  82. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:25:45 | 显示全部楼层
你只是在一个形状内复制一个块吗?如果这样的话,从对象外开始排列块会容易得多,那么只需删除形状外的任何块。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:34 , Processed in 0.764726 second(s), 56 queries .

© 2020-2025 乐筑天下

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