acadaa 发表于 2022-9-6 17:16:36

我想修改我的lisp

我想修改我搜索的lisp,发现将不同名称的动态块的属性更改为相同,那么我应该如何修改呢?
;; Match Dynamic Block Properties-Lee Mac;; Matches all dynamic block properties from a selected source dynamic block;; to all selected destination dynamic blocks of the same name.(defun c:dynmatch ( / blk des inc obj prp src )    (while      (progn (setvar 'errno 0) (setq src (car (entsel "\nSelect Source Dynamic Block: ")))            (cond                (   (= 7 (getvar 'errno))                  (princ "\nMissed, try again.")                )                (   (= 'ename (type src))                  (cond                        (   (/= "INSERT" (cdr (assoc 0 (entget src))))                            (princ "\nObject is not a block.")                        )                        (   (= :vlax-false (vla-get-isdynamicblock (setq src (vlax-ename->vla-object src))))                            (princ "\nBlock is not dynamic.")                        )                  )                )            )      )    )    (if      (and (= 'vla-object (type src))            (setq des                (LM:ssget "\nSelect Destination Dynamic Blocks: "                  (list "_:L"                        (list '(0 . "INSERT")                            (cons 2                              (strcat "`*U*,"                                    (setq blk (strcase (vla-get-effectivename src)))                              )                            )                        )                  )                )            )            (setq prp                (mapcar 'vla-get-value                  (vlax-invoke src 'getdynamicblockproperties)                )            )      )      (repeat (setq inc (sslength des))            (setq obj (vlax-ename->vla-object (ssname des (setq inc (1- inc)))))            (if (= (strcase (vla-get-effectivename obj)) blk)                (mapcar                  (function                        (lambda ( a b )                            (if (/= "ORIGIN" (strcase (vla-get-propertyname a)))                              (vla-put-value a b)                            )                        )                  )                  (vlax-invoke obj 'getdynamicblockproperties)                  prp                )            )      )    )    (princ));; ssget-Lee Mac;; A wrapper for the ssget function to permit the use of a custom selection prompt;;;; Arguments:;; msg    - selection prompt;; params - list of ssget arguments(defun LM:ssget ( msg params / sel )    (princ msg)    (setvar 'nomutt 1)    (setq sel (vl-catch-all-apply 'ssget params))    (setvar 'nomutt 0)    (if (not (vl-catch-all-error-p sel)) sel))(vl-load-com) (princ)         

acadaa 发表于 2022-9-6 18:54:21

动态块之间的自定义属性是相同的。

ペ誰弄伤了琴丶 发表于 2022-11-21 17:53:21

真是难得的好帖子啊
页: [1]
查看完整版本: 我想修改我的lisp