ljs026 发表于 2004-8-29 01:11:00

求一個將圖塊變色程序

请问大大,可以编个程序将要变色的图块像<1>: "这样调用吗?该怎么写呢?而当选择改顏色时会调用顏色功能表,选择改层时则调用图层管理员功能表呢?

龙龙仔 发表于 2004-8-30 16:35:00

<b>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: SimSun; mso-bidi-font-family: SimSun; mso-fareast-language: ZH-CN"><SPAN style="mso-list: Ignore">1.<SPAN style="FONT: 7pt 'Times New Roman'">                                       </SPAN></SPAN>变色的图块-----到底是改甚么物件的顏色??? / 改甚么物件的层???<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p>


<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt"><SPAN style="mso-list: Ignore">2.<SPAN style="FONT: 7pt 'Times New Roman'">                                       </SPAN></SPAN>图层管理员功能表能改物件图层吗?????<o:p></o:p>

</b></SPAN>

ljs026 发表于 2004-8-31 17:34:00

小弟的意思是要将图块变色!以下这个是我在网上下载的程序,它可以选择要改层或改色!但却必须使用接口,大大能帮我解决不用接口也可使用吗?另外当它选择改色时会跳出选择顏色的功能表,但选择改层时却得自已输入 ,可以在选择改层时也跳出功能表吗?(假设图层管理员里已有需要的图层了)


;;命令:dwgblack <BR>;;将图中所有实体(包括块,嵌套块,尺寸中的无名块)变色 <BR>(defun #chg_color (e cnum0 cnum / tf e blkna)<BR>       (xdrx_setenttodb e)       <BR>       (setq tf (xdrx_getentdxf 0))<BR>       (cond<BR>                       ((or<BR>                                               (= tf "INSERT")<BR>                                               (= tf "DIMENSION")<BR>                               )<BR>                               (setq blkna (xdrx_getentdxf 2))<BR>                               (setq blkna (tblsearch "block" blkna))<BR>                               (setq e (cdr (assoc -2 blkna)))<BR>                               (while e<BR>                                               (xdrx_setenttodb e)<BR>                                               (setq tf (xdrx_getentdxf 0))<BR>                                               (if (or<BR>                                       (= tf "INSERT")<BR>                                       (= tf "DIMENSION")<BR>                       )<BR>       (progn<BR>                       (#chg_color e cnum0 cnum)<BR>       )<BR>       (progn<BR>                       (xdrx_setenttodb e)<BR>                       (xdrx_modent cnum0 cnum)<BR>       )<BR>                                               )<BR>                                               (setq e (entnext e))<BR>                               )<BR>                       )<BR>                       (t<BR>                               (xdrx_modent cnum0 cnum)<BR>                       )<BR>       )<BR>)<BR>;;地形图处理步骤二<BR>(defun c:dwgblack (/ ss key num num0 n e)       <BR>       (xdrx_begin)<BR>       (prompt "\n请选取要变色的实体&lt;全选&gt;:")<BR>       (if (not (setq ss (ssget)))<BR>                       (setq ss (ssget "x"))<BR>       )<BR>       (initget "1 2")<BR>       (setq key (getstring "\n&lt;1&gt;: "))<BR>       (if (or (= key "1")<BR>               (= key "")<BR>                                       )<BR>                       (progn<BR>                                       (setq num (acad_colordlg 7))<BR>                                       (setq num0 62)<BR>                       )<BR>                       (progn<BR>                                       (setq num (getstring "\n图层名称: "))<BR>                                       (setq num0 8)<BR>                       )<BR>       )<BR>       (setq n 0)<BR>       (xdrx_setsstodb ss 0)<BR>       (xdrx_pbarbegin "已经完成:" (sslength ss))<BR>       (while (setq e (xdrx_getentdata 0))<BR>                       (xdrx_pbarsetpos n)<BR>                       (setq n (1+ n))<BR>                       (#chg_color e num0 num)<BR>                       (entupd e)<BR>       )<BR>       (xdrx_pbarend)<BR>       (setvar "osmode" 4261)<BR>       (xdrx_end)       <BR>       (princ)<BR>)

龙龙仔 发表于 2004-9-1 17:19:00

你要改图块内物件or 改图块本身???

ljs026 发表于 2004-9-1 21:39:00

基本上 这个程序几乎对任何物件都能修改耶,至少小弟目前试用是如此!

龙龙仔 发表于 2004-9-2 08:14:00

;;不知你会多少编程???<BR>;;dwgblack程序还不能改属性&amp;几何公差&amp;引线的顏色(看谁有空补上)<BR>;;By 龙龙仔(LUCAS)<BR>;;命令:dwgblack <BR>;;将图中所有实体(包括块,嵌套块,尺寸中的无名块)变色 <BR>(defun #CHG_COLOR (E CNUM0 CNUM / TF E1 BLKNA)<BR>       (setq TF (DXF 0 E))<BR>       (cond<BR>                       ((or (= TF "INSERT")<BR>       (= TF "DIMENSION")<BR>                               )<BR>                               (MODENT E CNUM0 CNUM)<BR>                               (setq BLKNA (DXF 2 E))<BR>                               (setq BLKNA (tblsearch "block" BLKNA))<BR>                               (setq E (cdr (assoc -2 BLKNA)))<BR>                               (while E<BR>                                               (setq TF (DXF 0 E))<BR>                                               (if (or (= TF "INSERT")<BR>                                                       (= TF "DIMENSION")<BR>                       )<BR>       (#CHG_COLOR E CNUM0 CNUM)<BR>       (MODENT E CNUM0 CNUM)<BR>                                               )<BR>                                               (setq E (entnext E))<BR>                               )<BR>                       )<BR>                       (t (MODENT E CNUM0 CNUM))<BR>       )<BR>)


(defun TABLE (S / D R)<BR>       (while (setq D (tblnext S (null D)))<BR>                       (setq R (cons (cdr (assoc 2 D)) R))<BR>       )<BR>)


(defun SEL_LAY (/ LAY LAY1 ID)<BR>       (setq LAY (acad_strlsort (TABLE "Layer")))<BR>       (setq ID (load_dialog "lay.dcl"))<BR>       (new_dialog "lay" ID)<BR>       (start_list "lay")<BR>       (mapcar 'add_list LAY)<BR>       (end_list)<BR>       (action_tile<BR>                       "lay"<BR>                       "(setq lay1 (nth (atoi $value) lay))"<BR>       )<BR>       (start_dialog)<BR>       (unload_dialog ID)<BR>       LAY1<BR>)


(defun MODENT (E EE COL)<BR>       (setq E (entget E))<BR>       (if (= (assoc EE E) NIL)<BR>                       (setq E (append E (list (cons EE COL))))<BR>                       (setq E (subst (cons EE COL) (assoc EE E) E))<BR>       )<BR>       (entmod E)<BR>)


(defun DXF (CODE ENT) (cdr (assoc CODE (entget ENT))))


(defun C:DWGBLACK (/ SS KEY NUM NUM0 N E LEN)<BR>       (arxload "acetutil.arx" NIL)<BR>       (prompt "\n请选取要变色的实体&lt;全选&gt;:")<BR>       (if (not (setq SS (ssget)))<BR>                       (setq SS (ssget "x"))<BR>       )<BR>       (initget "1 2")<BR>       (setq KEY (getstring "\n&lt;1&gt;: "))<BR>       (if (or (= KEY "1")<BR>               (= KEY "")<BR>                                       )<BR>                       (setq NUM       (acad_colordlg 7)        ; (acad_truecolordlg 7)<BR>               NUM0 62                        ;真色彩很少用,程序留给你写吧!<BR>                       )<BR>                       (setq NUM       (SEL_LAY)<BR>               NUM0 8<BR>                       )<BR>       )<BR>       (setq N 0)<BR>       (acet-ui-progress "已经完成:" (setq LEN (sslength SS)))<BR>       (setq N 0)<BR>       (repeat LEN<BR>                       (#CHG_COLOR (setq E (ssname SS N)) NUM0 NUM)<BR>                       (entupd E)<BR>                       (acet-ui-progress -1)<BR>                       (setq N (1+ N))<BR>       )<BR>       (acet-ui-progress)<BR>       (princ)<BR>)


        ;|<BR>;;----lay.dcl档<BR>lay : dialog {label="选取图层";<BR>        : list_box {<BR>        key = "lay"; <BR>        height                                                                               = 20;<BR>        width                                                                                       = 40; <BR>        fixed_width_font = true;<BR>        fixed_width                                       = true;<BR>                                                                                               }<BR>        ok_cancel;<BR>        }<BR>|;<BR>

ljs026 发表于 2004-9-2 16:16:00

为何会出现错误: no function definition: ACET-UI-PROGRESS?


不好意思!小弟一点都不会耶,因为小弟只能从网下下载一些教学文件,可遇到问题又无人解答,所以不时麻烦大大您,再从大大解答的程序中和原程序对照,以求解答,真是麻烦大大您了

龙龙仔 发表于 2004-9-2 17:18:00

要配合expresstool (大部份的人都会安装----autocad 内含的工具软体)


(arxload "acetutil.arx" NIL)


;;没有就不要用,修改如下


        (setq N 0)<BR>;; (acet-ui-progress "已经完成:" (setq LEN (sslength SS)))


(setq LEN (sslength SS))<BR>       (setq N 0)<BR>       (repeat LEN<BR>                       (#CHG_COLOR (setq E (ssname SS N)) NUM0 NUM)<BR>                       (entupd E)<BR>                        ;; (acet-ui-progress -1)<BR>                       (setq N (1+ N))<BR>       )<BR>       ;;(acet-ui-progress)<BR>       (princ)<BR>)

ljs026 发表于 2004-9-3 19:49:00

请教龙大大,小弟在网上找到了个程序,但还差了一点,就符合了小弟的需求,不知大大能不能帮帮小弟改成之前小弟所希望的程序,但这个程序得先选择顏色再选择物件,不知道能否先选择物件再选择顏色或图层


(defun C:FIXBLOCK (/ COL SS CNT IDX BLKNAME DONELIST)<BR>       (defun GRP (GCC EL) (cdr (assoc GCC EL)))<BR>       (defun UPDATE        (BNAME COL / ENAME ELIST)<BR>                       (setq ENAME (tblobjname "BLOCK" BNAME))<BR>                       (if<BR>                                       (and ENAME<BR>                       (zerop (logand 52 (GRP 70 (entget ENAME '("*")))))<BR>                                       )<BR>                                               (progn<BR>       (while        ENAME<BR>                       (if (or (= "INSERT" (GRP 0 (entget ENAME)))<BR>                               (= "DIMENSION" (GRP 0 (entget ENAME)))<BR>                                                       )<BR>                                       (UPDATE (GRP 2 (entget ENAME)) COL)<BR>                       )<BR>                       (setq ELIST (entget ENAME '("*"))<BR>               ELIST (subst '(8 . "0") (assoc 8 ELIST) ELIST)<BR>               ELIST (if (assoc 62 ELIST)<BR>                       (subst (cons 62 COL) (assoc 62 ELIST) ELIST)<BR>                       (append ELIST (list (cons 62 COL)))<BR>                                                               )<BR>                       )<BR>                       (entmod ELIST)<BR>                       (setq ENAME (entnext ENAME))<BR>       )<BR>       't<BR>                                               )<BR>                       )<BR>       )<BR>       (if (&gt; (logand (GRP 70 (tblsearch "layer" "0")) 1) 0)<BR>                       (princ "\nLayer 0 must be thawed before running FIXBLOCK!\n"<BR>                       )<BR>                       (progn<BR>                                       (if<BR>        (progn<BR>               (setq COL (acad_colordlg 7))<BR>               (princ "\nPress       to fix all Blocks New Color\n")<BR>               (setq        CNT 0<BR>                SS       (ssget '((0 . "INSERT,DIMENSION")))<BR>               )<BR>        )<BR>       (progn<BR>                       (setq IDX (sslength SS))<BR>                       (while (&gt;= (setq IDX (1- IDX)) 0)<BR>                                       (if<BR>                                                       (not<BR>               (member (setq BLKNAME (GRP 2 (entget (ssname SS IDX))))<BR>                       DONELIST<BR>               )<BR>                                                       )<BR>                (progn<BR>                       (if (UPDATE BLKNAME COL)<BR>                                       (setq CNT (1+ CNT))<BR>                       )<BR>                       (setq DONELIST (cons BLKNAME DONELIST))<BR>                )<BR>                                       )<BR>                       )<BR>       )<BR>       (while        (setq BLKNAME (GRP 2 (tblnext "BLOCK" (not BLKNAME))))<BR>                       (if (UPDATE BLKNAME COL)<BR>                                       (setq CNT (1+ CNT))<BR>                       )<BR>       )<BR>                                       )<BR>                                       (princ (strcat "\n"<BR>                                               (itoa CNT)<BR>                                               " block"<BR>                                               (if (= CNT 1)<BR>                                                               ""<BR>                                                               "s"<BR>                                               )<BR>                                               " redefined New Color\n"<BR>                                       )<BR>                                       )<BR>                       )<BR>       )<BR>       (command "_.REGEN")<BR>       (princ)<BR>)<BR>
页: [1]
查看完整版本: 求一個將圖塊變色程序