enixing 发表于 2008-1-28 22:24:00

请问怎么增加扩展数据,而且可以根据扩展数据用ssget筛选。。。

研究了一个晚上,发现vb方面比较多。。。请问lisp怎么可以办到呢?

楚留香 发表于 2008-1-28 23:11:00

<p class="MsoNormal" align="left" style="LINE-HEIGHT: 150%;"><font face="华文行楷" color="#000000" size="5" style="BACKGROUND-COLOR: #ffffff;"></font></p><p class="MsoNormal" align="left" style="LINE-HEIGHT: 150%;"><font style="BACKGROUND-COLOR: #ffffff;"><font color="#000000"><font face="华文行楷" size="5">&nbsp;&nbsp; </font><font face="华文行楷" size="3">&nbsp;</font><font size="3">(ssadd ])&nbsp;&nbsp;&nbsp;</font>&nbsp;&nbsp; </font></font></p><p class="MsoNormal" align="left" style="LINE-HEIGHT: 150%; TEXT-ALIGN: left;"><font style="BACKGROUND-COLOR: #ffffff;"><font color="#000000"><font size="3">如果调用此函数而未跟随任何参数的话</font><font size="3">, ssadd </font><font size="3">将建立一个新的选择集</font><font size="3">, </font><font size="3">而此选择集中没有任何东西。若其后跟随一个单独的图元名参数</font><font size="3">, ssadd </font><font size="3">将建立一个包含此图元名的新选择集。假如其后不但有图元名且还有一个选择集</font><font size="3">, </font><font size="3">那么它会将此指名的图元加入到这个选择集上。</font><font size="3">ssadd</font><font size="3">会返回新的选择集或修改后的选择集。请注意当增加一个图元到一个选择集上时</font><font size="3">, </font><font size="3">新的图元是实际被增添到此已存在的选择集上的</font><font size="3">, </font><font size="3">同时此选择集将返回如同选择集</font><font size="3">ss</font><font size="3">被返回一样的结果。如果选择集被设定了其他的变量上</font><font size="3">, </font><font size="3">那么它们也会反映所增加的部分。如果我们所指名的图元已经在选择集内</font><font size="3">, </font><font size="3">则</font><font size="3">ssadd </font><font size="3">的动作会被忽略</font><font size="3">, </font><font size="3">同时不会显示任何错误信息。</font></font></font></p><p class="MsoNormal" style="LINE-HEIGHT: 150%;"><font color="#000000" size="3" style="BACKGROUND-COLOR: #ffffff;"></font></p>

wwwliuyu 发表于 2008-1-29 19:54:00

<p>我也很想知道,论坛上好象没见到过这方面的介绍,希望高手能出来指点下.</p>

hb_xiaofen 发表于 2008-2-13 19:12:00

<p></p>http://www.mjtd.com/bbs/dispbbs.asp?BoardID=3&amp;replyID=37432&amp;id=55821&amp;skin=0 你可以去看看

zzh-lsp 发表于 2009-6-6 00:47:00

<p>&nbsp;&nbsp;&nbsp;</p><p>&nbsp;(defun c:gc5 (/ j k sm dx zzzzz dx-ty xyz ddd -3ty ddd-ty zj-xyz)<br/>&nbsp;&nbsp;&nbsp; (princ "\n&gt;&gt;&gt; 欢迎使用zzh-SCS小工具------")<br/>&nbsp;&nbsp;&nbsp; (princ "\n&gt;&gt;&gt; 南溪高程加密之------&nbsp;&nbsp; 批量 + - 高程点的高程值 :")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\n&gt;&gt;&gt; 选取高程点(用鼠标框选):")<br/>&nbsp; (setvar "osmode" 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq j (ssget))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq zzzzz (getreal "\n&gt;&gt;&gt; 请输入加减改正值:&nbsp; "))<br/>&nbsp; (if (= (numberp zzzzz) T)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp; (if (/= j nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq k 0 sm (sslength j))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (&lt; k sm)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq dx (ssname j k))<br/>&nbsp; (setq dx-ty (entget dx'("*")))<br/>&nbsp; <br/>&nbsp; (if (= (cdr (assoc 0 dx-ty)) "TEXT")&nbsp; (command "erase" dx ""))</p><p>&nbsp;&nbsp; (if (= (cdr (assoc 0 dx-ty)) "INSERT")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq z (+ (nth 3 (assoc 10&nbsp; dx-ty)) zzzzz))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq xyz (list (nth 1 (assoc 10 dx-ty)) (nth 2 (assoc 10 dx-ty)) z ))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "erase" dx "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "-layer" "m" "GCD" "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "-insert" "lc-gcd" xyz "0.5" "0.5" "0")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ddd (entlast)) <br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ddd-ty (entget ddd))&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq -3ty (list -3 (list "SOUTH" (cons 1000 "202101"))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (entmod (append ddd-ty (list -3ty)))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (setq zj-xyz (list (+ (nth 1 (assoc 10 dx-ty)) 3.325) (nth 2 (assoc 10 dx-ty))&nbsp; z))<br/>&nbsp;&nbsp;&nbsp; (command "text" "s" "Standard" "j" "m" zj-xyz "1.0" "0" (rtos z 2 2))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ddd (entlast))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ddd-ty (entget ddd))&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq -3ty (list -3 (list "SOUTH" (cons 1000 "202111"))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (entmod (append ddd-ty (list -3ty))&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ))<br/>&nbsp; <br/>&nbsp; (command "-layer" "m" "0" "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq k (+ k 1)))) )&nbsp; ))<br/>&nbsp;&nbsp; (princ "\n&gt;&gt;&gt; 南溪高程加密之------&nbsp;&nbsp; 批量 + - 高程点的高程值 :")<br/>&nbsp;&nbsp; (princ "\n&gt;&gt;&gt;处理完毕.......&nbsp;&nbsp; ^_^&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ")<br/>&nbsp;&nbsp; (princ)<br/>)</p><p>其中&nbsp; (setq ddd-ty (entget ddd))&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq -3ty (list -3 (list "SOUTH" (cons 1000 "202111"))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (entmod (append ddd-ty (list -3ty))&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就是<strong>增加扩展数据</strong></p><p></p><p><strong>下面代码()可以根据扩展数据用ssget筛选。。。</strong></p><p>&nbsp;&nbsp; (setq yt-j (ssget "x" '((-4 . "&lt;and")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-4 . "&lt;or")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-3 ("SOUTH" (1000 . "140001")))&nbsp;&nbsp; ;阳台<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-3 ("SOUTH" (1000 . "143130")))&nbsp;&nbsp; ;檐廊<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-3 ("SOUTH" (1000 . "141400")))&nbsp;&nbsp; ;破房<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-4 . "or&gt;")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (6 . "X5")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (0 . "LWPOLYLINE")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (8 . "JMD")<br/>&nbsp;&nbsp;&nbsp;&nbsp;(-4 . "and&gt;"))))</p>

linhui12 发表于 2009-6-6 12:37:00

本帖最后由 作者 于 2009-6-6 19:32:51 编辑 <br /><br /> <p>请教楼上,如何把以下lisp中的"TTT"和"CX"两个命令合并啊</p><p>目前的数据格式为:1,0,0,0,500,0,0,1279,0,-500,1679,0,-500</p><p>怎样才能让其成为:1,BW14-06,89,6,0,0,0,500,0,0,1279,0,-500,1679,0,-500</p><p>以上"BW14-06","89","6"均来自扩展数据</p><p></p><p>测试图纸</p>

zzh-lsp 发表于 2009-6-6 18:01:00

<p>要把以下lisp中的"TTT"和"CX"两个命令合并 </p><p></p><p>(DEFUN C:CX()...............&nbsp;defun 是可以用来自定义函数的&nbsp;Autolsp函数</p><p>改成 (DEFUN CX()...........就可以了</p><p>&nbsp; 现在&nbsp;cx 就是一个自定义函数</p><p>&nbsp; 加载后就可以随时调用它了, 方法为&nbsp;&nbsp;&nbsp; (自定义函数名称)&nbsp; 即&nbsp; (cx)</p><p>(cx)现在就相当于一个Autolsp函数,可以随时调用它,就像你使用ssget&nbsp;car等函数一样</p><p>不知有没有解决楼上的问题</p>

ZZXXQQ 发表于 2009-6-6 18:23:00

这样试试:
(defun C:ttt (/ E FI I LST P PT SS STR)
(setq fi '((0 . "*POLYLINE")))    ; Filter for ssget.
(prompt " \n选取等高线:")
(setq SS (ssget fi))
(setq i -1)
(setq p (getint " \n指定序号<1>:"))
(if (= P nil) (setq p 1))
(while (setq i (1+ i) e (ssname ss i))
(setq ccx (cx e))
(setq str (strcat (itoa p) "," ccx)
      p   (1+ p)
      ii-1)
(repeat 4
   (if (setq ii (1+ ii) pt (vlax-curve-getpointatparam e ii))
    (setq str (strcat str (rtos(car pt) 2 3) "," (rtos(cadr pt) 2 3) "," (rtos(caddr pt) 2 3)))
   )
)
(setq lst (cons str lst))
)
(setq Fn (getfiled "写出文件" "" "txt" 1))
(setq F (open Fn "w"))
(mapcar '(lambda (x) (write-line x f)) (reverse lst))
(close f)
(princ)
)
;***************************
(defun C:CX() (cx (car(entsel))))
(defun cx (en)
(setq XDATA (mapcar 'cdr (cdadr(assoc -3 (entget en '("PIPESOLID-*" "PIPEWAY-*"))))))
)

linhui12 发表于 2009-6-6 19:16:00

报告Z版,程序经您修改后运行时提示"; 错误: 参数类型错误: stringp ("AH111-01")"然后就不运行了,AH111-01是扩展数据,要怎么处理啊

ZZXXQQ 发表于 2009-6-6 23:11:00

因无图形调试程序,所以只知道错误是字串出错了,不知道是在哪句程序出错。
页: [1] 2
查看完整版本: 请问怎么增加扩展数据,而且可以根据扩展数据用ssget筛选。。。