龙龙仔 发表于 2007-7-25 17:17:00

<p>;;This file is designed to test how the vlr-copied event fires.<br/>;;The event calls the callback function once for each copy. In<br/>;;an array command, it would fire multiple times before the command<br/>;;is ended. To test the effects, load this function, draw<br/>;;an object, run the obs program and then run the array command.</p><p>;;D. C. Broad, Jr. (c) 2002<br/>;;Cost: 50% of the profits of using it. ;-)</p><p>;;Callback dummy<br/>(defun RPORT (A B C)<br/>&nbsp; (if(/= (CAR C) 0) ;FOR R2007<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "A:")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ A)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "B:")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ B)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "C:")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ C)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)</p><p>;;Clear all reactors to get baseline test.<br/>(vlr-remove-all)</p><p>;;Command to select the object to be tracked by<br/>;;the vlr-copied reactor<br/>(defun C:OBS (/ E O)<br/>&nbsp; (setq E (car (entsel)))<br/>&nbsp; (setq O (vlax-ename-&gt;vla-object E))<br/>&nbsp; (vlr-object-reactor<br/>&nbsp;&nbsp;&nbsp; (list O)<br/>&nbsp;&nbsp;&nbsp; "Data"<br/>&nbsp;&nbsp;&nbsp; '((:vlr-copied . RPORT))<br/>&nbsp; )<br/>)</p>

vken7az2p 发表于 2007-7-29 17:10:00

本帖最后由 作者 于 2007-7-29 17:11:49 编辑


再次请教版主,
以下两个问题
01.我试着取得复制后产生的物件,再将其加入成为反应器,
但却都没法完成,请问程序中哪里出错呢?
02.删除后若执行 UNDO 命令,所恢复的物件是否变成临时性反应器?
希望版主或是其他高手可以解答一下.
谢谢!

(VL-LOAD-COM)
(SETQ ACADOBJECT   (VLAX-GET-ACAD-OBJECT))
(SETQ ACADDOCUMENT (VLA-GET-ACTIVEDOCUMENT ACADOBJECT))
(SETQ MSPACE       (VLA-GET-MODELSPACE ACADDOCUMENT))
; 复制反应程序
(DEFUN AR_AE_RR_COPIED
(NOTIFIER-OBJECT REACTOR-OBJECT PARAMETER-LIST /
AR_AE_RR_COPIED AR_AE_RR_MODIFIED BRK_VLA-NR-OBJ
BRK-VLA-RR-OBJ DXF05_LAS-OBJ DXF05_NN-OBJ DXF05_NR-OBJ
DXF05_RR-OBJ EN-AREA EN-AREA-M I LST NN NR-OBJ PTDT RE
RR-OBJ VLA-NR-OBJ VLA-RR-OBJ)
(PRINT "AR_AE_RR_COPIED,复制反应程序")
(IF (VLAX-READ-ENABLED-P NOTIFIER-OBJECT) ;;确定物件对象是否可读
(PROGN
(SETQ NR-OBJ (ENTLAST)) ;取出最后物件
(IF (= (AR_DXF 0 NR-OBJ) "LWPOLYLINE")
(PROGN
(SETQ VLA-NR-OBJ (VLAX-ENAME->VLA-OBJECT NR-OBJ)) ;转换为VLA
(SETQ PTDT (VLAX-CURVE-GETPOINTATPARAM NR-OBJ 0)) ;PL起点
(SETQ DXF05_NR-OBJ (VLA-GET-HANDLE VLA-NR-OBJ)) ;图元处理码
(SETQ BRK_VLA-NR-OBJ (LIST VLA-NR-OBJ)) ;串列VLA
; 建立复制物件后的反应器
(SETQ LST (CDR (CAR (VLR-REACTORS :VLR-Object-Reactor)))) ;取出反应器列表
(SETQ I 0)
(SETQ RE T)
(SETQ DXF05_LAS-OBJ (VLA-GET-HANDLE (CAR (VLR-OWNERS (LAST LST))))) ;最后一笔资料

(WHILE RE
(SETQ NN (VLR-OWNERS (NTH I LST)))
(SETQ DXF05_NN-OBJ (VLA-GET-HANDLE (CAR NN)))
(COND
((= DXF05_NR-OBJ DXF05_NN-OBJ)
(PRINT "相同资料 ") (PRINC (ITOA I))
(SETQ I (1+ I))
(SETQ RE T)
)
((AND (= DXF05_LAS-OBJ DXF05_NN-OBJ)
      (= DXF05_NR-OBJ DXF05_NN-OBJ)
      )
(PRINT "最后一笔资料 ") (PRINC (ITOA I))
(SETQ RE NIL)
)
((/= DXF05_NR-OBJ DXF05_NN-OBJ)
(SETQ EN-AREA (VLA-GET-AREA VLA-NR-OBJ)) ;取出面积
(SETQ EN-AREA-M (STRCAT (RTOS (/ EN-AREA 10000) 2 2) "㎡")) ;面积单位
(VL-CMDF "TEXT" PTDT 30 0 EN-AREA-M ) ;输出面积数值成文字
(SETQ RR-OBJ (ENTLAST))
(SETQ VLA-RR-OBJ (VLAX-ENAME->VLA-OBJECT RR-OBJ)) ;转换为VLA
(SETQ DXF05_RR-OBJ (VLA-GET-HANDLE VLA-RR-OBJ)) ;图元处理码
(SETQ BRK-VLA-RR-OBJ (LIST VLA-RR-OBJ)) ;串列VLA
(VLR-PERS ;;永久反应器
(VLR-OBJECT-REACTOR ;;物件反应器
BRK_VLA-NR-OBJ ;;NR_物件对象,LIST的VLA
DXF05_RR-OBJ   ;;RR_编辑对象.图元处理码
'((:VLR-MODIFIED . AR_AE_RR_MODIFIED) ;编辑反应程序
(:VLR-COPIED . AR_AE_RR_COPIED) ;复制反应程序
(:VLR-ERASED . AR_AE_RR_ERASED) ;删除反应程序
)
))
(SETQ I (1+ I))
(SETQ RE NIL)
)
) ;_ 结束COND
) ;_ 结束WHILE
) ;_ 结束PROGN
) ;_ 结束IF
) ;_ 结束PROGN
) ;_ 结束IF
) ; DEFUN AR_AE_RR_COPIED
; 编辑反应程序
(DEFUN AR_AE_RR_MODIFIED
(NOTIFIER-OBJECT REACTOR-OBJECT PARAMETER-LIST / EN-AREA EN-AREA-M RR-OBJ VLR-TX)
(PRINT "AR_AE_RR_MODIFIED,编辑反应程序")
(IF (VLAX-READ-ENABLED-P NOTIFIER-OBJECT) ;;确定物件对象是否可读
(PROGN
(SETQ RR-OBJ (HANDENT (VLR-DATA REACTOR-OBJECT))) ;;编辑对象,REACTOR-OBJECT
(SETQ VLR-RR-OBJ(VLAX-ENAME->VLA-OBJECT RR-OBJ))
(SETQ EN-AREA (VLA-GET-AREA NOTIFIER-OBJECT)) ;;物件对象,NOTIFIER-OBJECT
(SETQ EN-AREA-M (STRCAT (RTOS (/ EN-AREA 10000) 2 2) "㎡"))
(VLA-PUT-TEXTSTRING VLR-RR-OBJ EN-AREA-M)
) ;_ 结束PROGN
) ;_ 结束IF
) ;DEFUN AR_AE_RR_MODIFIED
; 删除反应程序
(DEFUN AR_AE_RR_ERASED (NOTIFIER-OBJECT REACTOR-OBJECT PARAMETER-LIST / )
(PRINT "AR_AE_RR_ERASED,删除反应程序")
(FOREACH I (CDR (CAR (VLR-REACTORS :VLR-OBJECT-REACTOR)))
(IF (OR (VLAX-ERASED-P (CAR (VLR-OWNERS I)))
(VLAX-ERASED-P (VLAX-ENAME->VLA-OBJECT NOTIFIER-OBJECT))
)
(PROGN
(SETQ RR-OBJ (HANDENT (VLR-DATA REACTOR-OBJECT))) ;;编辑对象,REACTOR-OBJECT
(ENTDEL RR-OBJ)
(VLR-PERS-RELEASE I)
(VLR-REMOVE I)
) ;_ 结束PROGN
) ;_ 结束IF
)
) ;DEFUN AR_AE_RR_MODIFIED
; 删除没有物件对象者的反应器
(IF REMOVE_PERS_REACT
(PROGN
(FOREACH I (VLR-PERS-LIST)
(IF (NOT (VLR-OWNERS I))
    (PROGN
      (VLR-PERS-RELEASE I)
      (VLR-REMOVE I)
    ) ;_ 结束PROGN
) ;_ 结束IF
) ;_ 结束FOREACH
) ;_ 结束PROGN
) ;_ 结束if
(defun AR_DXF (#code #ename)
(cdr (assoc #code (entget #ename)))
)
; 执行产生面积程序
(defun c:CRAREA ()
(prompt "\n**<面积反应器练习>**")
(SETQ NR-OBJ (CAR (ENTSEL "\n 选取物件:")))
(SETQ PTDT (VLAX-CURVE-GETPOINTATPARAM NR-OBJ 0)) ;PL起点
(SETQ VLA-NR-OBJ (VLAX-ENAME->VLA-OBJECT NR-OBJ)) ;转换为VLA
(SETQ DXF05_NR-OBJ (VLA-GET-HANDLE VLA-NR-OBJ)) ;图元处理码
(SETQ BRK_VLA-NR-OBJ (LIST VLA-NR-OBJ)) ;串列VLA
(SETQ EN-AREA (VLA-GET-AREA VLA-NR-OBJ)) ;取出面积
(SETQ EN-AREA-M (STRCAT (RTOS (/ EN-AREA 10000) 2 2) "㎡")) ;面积单位
(VL-CMDF "TEXT" PTDT 30 0 EN-AREA-M ) ;输出面积数值成文字
(SETQ RR-OBJ (ENTLAST)) ;;取得文字图元
(SETQ VLA-RR-OBJ (VLAX-ENAME->VLA-OBJECT RR-OBJ)) ;转换为VLA
(SETQ DXF05_RR-OBJ (VLA-GET-HANDLE VLA-RR-OBJ)) ;图元处理码
(SETQ BRK-VLA-RR-OBJ (LIST VLA-RR-OBJ)) ;串列VLA
; 建立反应器
(VLR-PERS ;;永久反应器
(VLR-OBJECT-REACTOR ;;物件反应器
BRK_VLA-NR-OBJ ;;NR_物件对象,LIST的VLA
DXF05_RR-OBJ   ;;RR_编辑对象.图元处理码
'((:VLR-MODIFIED . AR_AE_RR_MODIFIED) ;编辑反应程序
(:VLR-COPIED . AR_AE_RR_COPIED) ;复制反应程序
(:VLR-ERASED . AR_AE_RR_ERASED) ;删除反应程序
)
))
(prin1))

龙龙仔 发表于 2007-7-30 12:54:00

你沒有把11樓的例子看懂,VLR-COPIED觸發時,實際物件其實還沒有生成呢!!慢慢研究吧!

vken7az2p 发表于 2007-7-30 22:22:00

<p>总算明白版主说是复制时并没有完成物件的产生,<br/>但该怎样在程式结束后取得物件,就又是一各问题了.</p><p>不知道版主可以说一下吗</p><p>谢谢</p><p>(DEFUN AR_AE_RR_COPIED<br/>(NOTIFIER-OBJECT REACTOR-OBJECT PARAMETER-LIST / )<br/>(IF (/= (CAR PARAMETER-LIST) 0)<br/>&nbsp; (PROGN<br/>(PRINC PARAMETER-LIST)<br/>(PRINC (ENTGET (CAR PARAMETER-LIST)))<br/>) ;_ 结束PROGN<br/>) ;_ 结束IF<br/>)<br/></p>

龙龙仔 发表于 2007-7-31 07:58:00

<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman">Vlr-copied </font>的<font face="Times New Roman">3</font>個參數是甚麼<font face="Times New Roman">? </font>看想楚點<font face="Times New Roman">,</font>把它用表記錄起來</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp; (defun AR_AE_RR_COPIED (NOTIFIER-OBJECT REACTOR-OBJECT PARAMETER-LIST /)</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><p><font face="Times New Roman">&nbsp;</font></p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;">再用<font face="Times New Roman">vlr-commandended</font>反應器處理一下即可<font face="Times New Roman">(</font>把<font face="Times New Roman">copy </font>出來的物件加上反應器<font face="Times New Roman">) </font></p>

highflybir 发表于 2007-7-31 11:50:00

<p>我理解后改成如下:</p><p>1、先在主程序中创建COMMAND反应器</p><p>;;;Creat COMMAND reactor<br/>(defun Creat-Command-Reactor ()<br/>&nbsp; (if (not *CommandReactor*)<br/>&nbsp;&nbsp;&nbsp; (setq *CommandReactor*<br/>&nbsp;&nbsp;&nbsp; (vlr-pers<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlr-command-reactor<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nil<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '((:vlr-commandwillstart . CMD-Start)<br/>&nbsp;&nbsp; (:vlr-commandended . CMD-Ended)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; );setq<br/>&nbsp; );if<br/>)</p><p><br/>2、定义复制回调函数</p><p>;;; 复制回调函数<br/>(DEFUN AR_AE_RR_COPIED (NOTIFIER-OBJECT&nbsp;REACTOR-OBJECT&nbsp;PARAMETER-LIST / ent)<br/>&nbsp; (if (/= (car PARAMETER-LIST) 0)&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; ;如果有拷贝(copy,array等方式)<br/>&nbsp;&nbsp;&nbsp; (PROGN<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ent (car PARAMETER-LIST))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq *ReactorCopy* (cons ent *ReactorCopy*))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;设置拷贝指针变量<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ "\nAR_AE_RR_COPIED,复制反应程序")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;这句可以不要<br/>&nbsp;&nbsp;&nbsp; ) ;_ 结束PROGN<br/>&nbsp; ) ;_ 结束IF<br/>) ;_ 结束defun</p><p>;;;命令开始<br/>(defun CMD-start (reactor command-list /)<br/>&nbsp; (setq&nbsp;*ReactorCopy* nil)&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; ;命令开始前清空拷贝指针<br/>&nbsp; (princ)<br/>)<br/>;;;命令结束<br/>(defun CMD-Ended (reactor command-list / pt0 obj area area-m rr-ent rr-obj)<br/>&nbsp; (if *ReactorCopy*&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; (foreach n *ReactorCopy*&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; ;对每份拷贝<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ pt0 (VLAX-CURVE-GETPOINTATPARAM n 0))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;PL起点???<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq obj (vlax-ename-&gt;vla-object n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ area (vla-GET-AREA obj))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;取出面积<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ area-m (STRCAT (RTOS (/ area 10000) 2 2) "㎡"));面积单位<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (make-text area-m pt0 3000)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;输出面积数值成文字<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;&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; ;建议不用command方式<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ RR-ent (ENTLAST))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;取得文字图元<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ RR-OBJ (VLAX-ENAME-&gt;vla-OBJECT RR-ent))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;转换为VLA<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;永久反应器<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (VLR-PERS<br/>&nbsp;;;物件反应器<br/>&nbsp;(VLR-OBJECT-REACTOR<br/>&nbsp;&nbsp; ;;NR_物件对象,LIST的VLA<br/>&nbsp;&nbsp; (list obj)<br/>&nbsp;&nbsp; ;;RR_编辑对象<br/>&nbsp;&nbsp; (cons rr-obj area)<br/>&nbsp;&nbsp; '((:VLR-MODIFIED . AR_AE_RR_MODIFIED)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;编辑回调函数<br/>&nbsp;&nbsp;&nbsp;&nbsp; (:VLR-COPIED . AR_AE_RR_COPIED)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;复制回调函数<br/>&nbsp;&nbsp;&nbsp;&nbsp; (:VLR-ERASED . AR_AE_RR_ERASED)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;删除回调函数<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq *ReactorCopy* nil)&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; ;;命令结束后清空拷贝指针<br/>&nbsp; (princ)<br/>)</p>

龙龙仔 发表于 2007-7-31 12:54:00

<p>make-text&nbsp; 函數??&nbsp; </p><p><strong><font face="Verdana" color="#da2549">highflybir&nbsp;版主一看就懂了! 多寫些例子出來吧!</font></strong></p><p></p>

highflybir 发表于 2007-7-31 14:40:00

<p>对<font face="Verdana" color="#61b713"><strong>vken7az2p</strong><font color="#000000">的程序稍微做了一下改动。</font></font></p><p><font face="Verdana">建议不用handel作为vlr-owner,和data,而用其vla-object,在反应器的回调函数中尽量避免不用command来创建实体,而用vla方法或者entmake方法。</font></p><p><font face="Verdana">还有对这个程序最好能处理undo,erase,等情况,在文件被关闭时,注意清空一些无用的反应器。</font></p><p></p><p>make-text&nbsp; 函數是一个简单的用entmake创建文字的程序,参数三个,字符串,插入点,字高.</p><p></p>

vken7az2p 发表于 2007-7-31 23:34:00

<p><br/>谢谢 龙龙仔 版大 及 highflybir 版大,的指导.<br/>发现到了</p><p>01.在 :VLR-COMMANDENDED 状态中,不能使用 COMMAND 命令,而需使用其他命令来建立物件.<br/>如:<br/>(VL-LOAD-COM)<br/>(SETQ ACADOBJECT&nbsp;&nbsp; (VLAX-GET-ACAD-OBJECT))<br/>(SETQ ACADDOCUMENT (VLA-GET-ACTIVEDOCUMENT ACADOBJECT))<br/>(SETQ MSPACE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (VLA-GET-MODELSPACE ACADDOCUMENT))<br/>...<br/>(VLA-AddText MSPACE EN-AREA-M (vlax-3d-point PTDT) 30) ;VBA<br/>...<br/>也是可以完成建立文字.</p><p>02.原来 :VLR-COPIED 的回传值,要把他 LIST 起来,<br/>(SETQ ENT (CAR PARAMETER-LIST)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *REACTORCOPY* (CONS ENT *REACTORCOPY*)<br/>)<br/>只是变数的命名,带有 *R... 跟 REACTORCOPY 反应应该是没差异吧.</p><p>03.highflybir 版大提到,在文件被关闭时,注意清空一些无用的反应器。<br/>若是使用临时性反应器,是否变成在需要使用反应器时重新恢复关联即可,<br/>可以免去整理反应器资料库处理问题呢?</p><p>因为发现整理永久性反应器的资料库真是不好处理...<br/>尤其是遇到 只有一各物件对象 ,已经删除却能在资料库,<br/>不知道版大都怎样处理呢?</p><p>烦请各位指导一下<br/>谢谢</p>

wowan1314 发表于 2012-5-1 14:27:42

收藏了! 谢谢!
页: 1 [2] 3
查看完整版本: 永久物件反應器例子