通信人家园
标题:
一次关于CAD的二次开发
[查看完整版帖子]
[打印本页]
时间:
2020-7-9 01:44
作者:
sihutong
标题:
一次关于CAD的二次开发
(defun c:tee (/ allexdata dcl_id editlabel entdata entgrp entname exdata m n
newallexdata newexdata nn result val_lst value
)
(prompt "查看/增加/编辑扩展数据")
(defun getentdxf (ent dxf)
(cdr (assoc dxf (entget ent '("*"))))
)
(defun add_dclrow (dstr) (if dstr (setq val_lst (cons dstr val_lst))))
(defun getdclvalue ()
(setq n 1)
(setq newallexdata '())
(foreach exdata allexdata
(setq newexdata '())
(repeat (length (cdr exdata))
(setq newexdata (append (list (cons 1000 (get_tile (strcat "eb" (itoa n))))) newexdata))
(setq n (1+ n))
)
(setq newallexdata (append (list (cons (car exdata) (reverse newexdata))) newallexdata))
)
(setq newallexdata (cons -3 (reverse newallexdata)))
)
;(saverror)
(if (setq entgrp (cadr (ssgetfirst)))
(if (= (sslength entgrp) 1)
(setq entname (ssname entgrp 0))
)
(setq entname (car (entsel "\n 请选择要编辑扩展数据的对象: ")))
)
(while entname
(setq val_lst nil)
(if (getentdxf entname -3)
(setq allexdata (getentdxf entname -3))
(progn
(regapp "SunXApp")
(setq allexdata '(("SunXApp" (1000 . "")(1000 . "")(1000 . "")(1000 . ""))))
)
)
(setq editlabel (strcat (getenv "temp") "\\editlabel.dcl"))
(add_dclrow "editlabel:dialog{label=\"编辑标签\";")
(add_dclrow ":row{")
(setq n 1)
(foreach exdata allexdata
(add_dclrow (strcat ":boxed_column{label=\"" (car exdata) "\";"))
(setq m 1)
(repeat (length (cdr exdata))
(add_dclrow (strcat ":edit_box{label=\"标签" (itoa m) "\";key=\"eb" (itoa n) "\";width=30;}"))
(setq m (1+ m))
(setq n (1+ n))
)
(add_dclrow "}")
)
(add_dclrow "}ok_cancel;}")
(setq nn (open editlabel "w"))
(foreach n (reverse val_lst) (write-line n nn))
(close nn)
(if (< (setq dcl_id (load_dialog editlabel))
0
)
(exit)
)
(if (not (new_dialog "editlabel" dcl_id))
(exit)
)
(setq n 1)
(foreach exdata allexdata
(setq m 1)
(repeat (length (cdr exdata))
(if (= (type (cdr (nth (1- m) (cdr exdata)))) 'STR)
(setq value (cdr (nth (1- m) (cdr exdata))))
(setq value (rtos (cdr (nth (1- m) (cdr exdata)))))
)
(set_tile (strcat "eb" (itoa n)) value)
(setq m (1+ m))
(setq n (1+ n))
)
)
(action_tile "accept" "(getdclvalue)(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")
(setq result (start_dialog))
(cond
((= 1 result)
(setq entdata (entget entname '("*")))
(if (getentdxf entname -3)
(entmod (subst newallexdata (assoc -3 entdata) entdata))
(entmod (append entdata (list newallexdata)))
)
)
)
(setq entname (car (entsel "\n 请选择要编辑扩展数据的对象: ")))
)
;(restore)
(princ)
)
通信人家园 (https://www.txrjy.com/)
Powered by C114