REID7800 发表于 2022-7-6 11:41:26

那是我的错。这是一个完全不同的问题。与此线程无关。

alanjt 发表于 2022-7-6 11:45:47

我使用vla explode得到了一些奇怪的结果(双块),因此如果得到相同的结果,请删除它并取消注释用红色标记的vl cmdf expolde。
 
REMOVED

Lee Mac 发表于 2022-7-6 11:49:50

请记住,vla explode将在图形中保留原始块,而新对象将是副本。

alanjt 发表于 2022-7-6 11:51:44

啊,好的。这是有道理的。
 
试试这个。。。
(defun c:LongWall (/ blockname p1 p2)
;; Insert and array "LONG WALL" block (required)
;; Alan J. Thompson, 05.05.10
(vl-load-com)

(setq blockname "LONG WALL")

(if (and (or (tblsearch "block" blockname)
            (findfile (strcat blockname ".dwg"))
            (alert (strcat blockname " cannot be found!"))
          )
          (setq p1 (getpoint "\nSpecify block insertion point: "))
          (setq p2 (getpoint p1 "\nSpecify block end point: "))
   )
   ((lambda (block)
      (foreach x (vlax-invoke block 'GetDynamicBlockProperties)
      (and (eq (vla-get-propertyname x) "Distance")
             (vla-put-value
               x
               ((lambda (dist / num)
                  (cond
                  ((>= 1. (/ dist 46.)) 46.)
                  ((< 1. (setq num (/ dist 46.))) (* 46. (1+ (fix num))))
                  (46.)
                  )
                )
               (distance p1 p2)
               )
             )
      )
      )
      (vl-catch-all-apply (function (lambda () (vla-explode block) (vla-delete block))))
    )
   (vla-insertblock
       (if
         (or (eq acmodelspace
               (vla-get-activespace
                   (cond (*AcadDoc*)
                         ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
                   )
               )
             )
             (eq :vlax-true (vla-get-mspace *AcadDoc*))
         )
          (vla-get-modelspace *AcadDoc*)
          (vla-get-paperspace *AcadDoc*)
       )
       (vlax-3d-point (trans p1 1 0))
       blockname
       1.
       1.
       1.
       (angle (trans p1 1 0) (trans p2 1 0))
   )
   )
)
(princ)
)

dbroada 发表于 2022-7-6 11:53:52

我并没有真正遵循这个思路,但当修改动态块(在AutoCAD中)时,它们会得到匿名名称。这会对您使用代码所做的任何事情产生任何影响吗?

alanjt 发表于 2022-7-6 11:59:34

 
与通过动态夹点进行更改时相同。

alanjt 发表于 2022-7-6 12:02:50

刚记起来,我忘了在角度上解释非WCS;以上更新。

REID7800 发表于 2022-7-6 12:03:13

你就是那个男人!!这正是我想要的。谢谢

alanjt 发表于 2022-7-6 12:08:28

 
不客气。很乐意帮忙。
 
支票在邮寄吗眨眼:

REID7800 发表于 2022-7-6 12:09:43

肯定
页: 1 [2]
查看完整版本: Lisp动态块(&D)