lisp读写cass属性_cass提取宗地属性lisp程序

南方cass提取宗地属性

(vl-load-com);; 条目名称 SOUTHDIJI;;选择宗地界址线(defun c:bak () ;; 获得JZD层上的闭合线选择集,必须带有扩展数据("SOUTH" (1000 . "300000"))。 (setq ss (ssget "x" '((0 . "*LINE") (8 . "JZD") (-4 . "&=") (70 . 1) (-3 ("SOUTH" (1000 . "300000"))))) Index 0 ) ;_ End setq (repeat (if ss (sslength ss) 0 ) ;_ End if (setq Ename (ssname ss Index) Index (1+ Index) Edata (entget Ename '("SOUTH")) ;; 找出对象所指向的词典。 ;;“{ACAD_XDICTIONARY”表示扩展词典组的起点。 Edata360 (cdr (member '(102 . "{ACAD_XDICTIONARY") Edata)) XrEnameSouth nil ) ;_ End setq (if Edata360 (progn ;; 360 所有者词典的硬所有者 ID/句柄。 ;; 在此不考虑出现多个360的情况,感觉这种情况不应该存在。 (setq DEname (cdr (assoc '360 Edata360)) ;_词典对象。 DEdata (entget DEname) ;_词典数据。 ;;条目名称SOUTHDIJI所对应的XRECORD对象 XrEnameSouth (cdr (assoc '360 (cdr (member '(3 . "SOUTHDIJI") DEdata)))) ) ;_ End setq ) ;_ End progn ) ;_ End if (if XrEnameSouth (progn (setq XrEdataSouth (entget XrEnameSouth) XrEdataSouth (vl-remove-if-not (function (lambda (_Var) (= 1 (car _Var)))) XrEdataSouth) XrEdataSouth (mapcar (function (lambda (_Var) (strcat "\t" (cdr _Var)))) XrEdataSouth) DiJiData (apply 'strcat XrEdataSouth) Xdata (mapcar 'cdr (cdr (assoc "SOUTH" (cdr (assoc '-3 Edata))))) DiJiData (strcat (nth 1 Xdata) "\t" (nth 2 Xdata) "\t" (nth 3 Xdata) DiJiData) ) ;_ End setq (princ (strcat DiJiData "\n")) ;;(setq DiJiDataLst nil) (setq DiJiDataLst (cons DiJiData DiJiDataLst));;; (vlax-invoke-method (vlax-ename->vla-object XrEnameSouth) 'GetXRecordData 'XRecordDataType 'XRecordData) ) ;_ End progn (progn ;; 没有对应的词典,找不到宗地属。 (princ (strcat

"\n句柄:[" (cdr (assoc '5 Edata)) "]所指的对象没有宗地属性。")) ) ;_ End progn ) ;_ End if ) ;_ End repeat (princ)) ;_ End defun

你可能感兴趣的:(lisp读写cass属性)