帮助加速我编写的代码
大家早上好!我编写了所有这些代码,将所有文本从一个标准更改为defpoints(一个不同的标准),只需按下一个按钮,即可完整地翻译所有层。不过,根据图形的大小,运行大约需要30-45秒。我知道这一切都是重复的,所以也许有另一种方法可以更快地做到这一点?
这是我从头开始写的第一段代码!所以我还在学习。谢谢你的建议。
(defun c:QFIXtest ()
(setq sset (ssget "x" '((8 . "STRUCTURES")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset "" "c" "bylayer" "")
(command ".chprop" sset "" "la" "Defpoints" "")
(setq sset1 (ssget "x" '((8 . "TOWER")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset1 "" "c" "bylayer" "")
(command ".chprop" sset1 "" "la" "Defpoints" "")
(setq sset2 (ssget "x" '((8 . "FENCE")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset2 "" "c" "bylayer" "")
(command ".chprop" sset2 "" "la" "Defpoints" "")
(setq sset3 (ssget "x" '((8 . "LEASED_AREA")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset3 "" "c" "bylayer" "")
(command ".chprop" sset3 "" "la" "Defpoints" "")
(setq sset4 (ssget "x" '((8 . "PROPOSED")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset4 "" "c" "bylayer" "")
(command ".chprop" sset4 "" "la" "Defpoints" "")
(setq sset5 (ssget "x" '((8 . "LANDSCAPING")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset5 "" "c" "bylayer" "")
(command ".chprop" sset5 "" "la" "Defpoints" "")
(setq sset6 (ssget "x" '((8 . "LEVEL")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset6 "" "c" "bylayer" "")
(command ".chprop" sset6 "" "la" "Defpoints" "")
(setq sset7 (ssget "x" '((8 . "ANTENNA_MOUNTS")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset7 "" "c" "bylayer" "")
(command ".chprop" sset7 "" "la" "Defpoints" "")
(setq sset8 (ssget "x" '((8 . "ANTENNA")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset8 "" "c" "bylayer" "")
(command ".chprop" sset8 "" "la" "Defpoints" "")
(setq sset9 (ssget "x" '((8 . "DIMENSIONS")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset9 "" "c" "bylayer" "")
(command ".chprop" sset9 "" "la" "Defpoints" "")
(setq sset10 (ssget "x" '((8 . "ANTENNA_PROPOSED")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset10 "" "c" "bylayer" "")
(command ".chprop" sset10 "" "la" "Defpoints" "")
(setq sset11 (ssget "x" '((8 . "MOUNTS_PROPOSED")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset11 "" "c" "bylayer" "")
(command ".chprop" sset11 "" "la" "Defpoints" "")
(setq sset12 (ssget "x" '((8 . "PROPERTY_LINES")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset12 "" "c" "bylayer" "")
(command ".chprop" sset12 "" "la" "Defpoints" "")
(setq sset13 (ssget "x" '((8 . "CUSTOMER")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset13 "" "c" "bylayer" "")
(command ".chprop" sset13 "" "la" "Defpoints" "")
(setq sset14 (ssget "x" '((8 . "REV_LAYER")(0 . "TEXT,MTEXT,*LEADER"))))
(command ".chprop" sset14 "" "c" "bylayer" "")
(command ".chprop" sset14 "" "la" "Defpoints" "")
;changes layer
(setq sset15 (ssget "x" '((8 . "STRUCTURES"))))
(command ".chprop" sset15 "" "c" "bylayer" "")
(command ".chprop" sset15 "" "la" "01_Data" "")
(setq sset16 (ssget "x" '((8 . "TOWER"))))
(command ".chprop" sset16 "" "c" "bylayer" "")
(command ".chprop" sset16 "" "la" "02_Tower" "")
(setq sset17 (ssget "x" '((8 . "FENCE"))))
(command ".chprop" sset17 "" "c" "bylayer" "")
(command ".chprop" sset17 "" "la" "03_Fence" "")
(setq sset18 (ssget "x" '((8 . "LEASED_AREA"))))
(command ".chprop" sset18 "" "c" "bylayer" "")
(command ".chprop" sset18 "" "la" "06_Lease Area" "")
(setq sset19 (ssget "x" '((8 . "PROPOSED"))))
(command ".chprop" sset19 "" "c" "bylayer" "")
(command ".chprop" sset19 "" "la" "08_Proposed Data" "")
(setq sset20 (ssget "x" '((8 . "LANDSCAPING"))))
(command ".chprop" sset20 "" "c" "bylayer" "")
(command ".chprop" sset20 "" "la" "01_Data" "")
(setq sset21 (ssget "x" '((8 . "ARROW"))))
(command ".chprop" sset21 "" "c" "bylayer" "")
(command ".chprop" sset21 "" "la" "Defpoints" "")
(setq sset22 (ssget "x" '((8 . "LEVEL"))))
(command ".chprop" sset22 "" "c" "bylayer" "")
(command ".chprop" sset22 "" "la" "01_Data" "")
(setq sset23 (ssget "x" '((8 . "ANTENNA_MOUNTS"))))
(command ".chprop" sset23 "" "c" "bylayer" "")
(command ".chprop" sset23 "" "la" "01_Data" "")
(setq sset24 (ssget "x" '((8 . "ANTENNA"))))
(command ".chprop" sset24 "" "c" "bylayer" "")
(command ".chprop" sset24 "" "la" "01_Data" "")
(setq sset25 (ssget "x" '((8 . "DIMENSIONS"))))
(command ".chprop" sset25 "" "c" "bylayer" "")
(command ".chprop" sset25 "" "la" "Defpoints" "")
(setq sset26 (ssget "x" '((8 . "ANTENNA_PROPOSED"))))
(command ".chprop" sset26 "" "c" "bylayer" "")
(command ".chprop" sset26 "" "la" "08_Proposed Data" "")
(setq sset27 (ssget "x" '((8 . "MOUNTS_PROPOSED"))))
(command ".chprop" sset27 "" "c" "bylayer" "")
(command ".chprop" sset27 "" "la" "08_Proposed Data" "")
) 提示:
(8 . "Layer,Layer2,Layer3") 我猜想多个命令调用是代码速度的主要缺陷,
因此,考虑创建一个assoc列表,并使用Tharwat的提示遍历选择集,然后使用相同的预定义assoc列表对62和8组码进行entmod。 实际上,Grrr准确地描述了代码将是什么,这是我在第二次回复中提到的注意事项,但他在这一点上更快。谢谢Grrr。
我需要去睡觉了,所以这是修改后的代码供你检查和学习,我留下了你的代码的第一部分,只要他们很容易处理修改。正当
(defun c:test (/ s i e)
(if (setq s (ssget "_X" '((8 . "STRUCTURES,TOWER,FENCE,LEASED_AREA,PROPOSED,LANDSCAPING,ARROW,LEVEL,ANTENNA_MOUNTS,ANTENNA,DIMENSIONS,ANTENNA_PROPOSED,MOUNTS_PROPOSED"))))
(repeat (setq i (sslength s))
(setq e (entget (ssname s (setq i (1- i)))))
(entmod
(append e
(list '(62 . 256)
(cadr (assoc (cdr (assoc 8 e))
'(("STRUCTURES" "01_Data")
("TOWER" "02_Tower")
("FENCE" "03_Fence")
("LEASED_AREA" "06_Lease Area")
("PROPOSED" "08_Proposed Data")
("LANDSCAPING" "la" "01_Data")
("ARROW" "Defpoints")
("LEVEL" "01_Data")
("ANTENNA_MOUNTS" "01_Data")
("ANTENNA" "01_Data")
("DIMENSIONS" "Defpoints")
("ANTENNA_PROPOSED" "08_Proposed Data")
("MOUNTS_PROPOSED" "08_Proposed Data")
) ))
)
)
)
)
)
(princ)
)
加快速度的一件事是,这些类型的调用是单个(命令…)呼叫
(command "_.CHPROP")
(foreach v lst
(command "_c" "BYLAYER"(car v) "_la" "DEFPOINTS")
(command "")
哇,谢谢你们的回复!我将把这些分开,试着理解它们。学习的好方法!非常感谢。
页:
[1]