局部放大
那位高手能把小鱼儿的局部放大完善一下. <P>(vl-load-com)<BR>;;;(alert "<A href="file://n/" target="_blank" >\\n</A>局部放大jbfd.2004.2.18")<BR>(defun c:jbfd (/ *error* mSpace cir i NEXT_PT<BR> READTYP READVAL basept line text tzz<BR> txtlen l2 l2end cen pt text_x<BR> ptt l2_x fh fh1 ss1<BR> MakeUnNameBlock<BR> )</P><P> (defun *error* (msg / ent count)<BR> (cond<BR> ((or (= msg "函数被取消") (= msg "function cancelled"))<BR> (command "_.ERASE" ss1 "")<BR> )<BR> ((= msg "ActiveX 服务器返回到: 未知名?: Center") ;清理输入d<BR> (alert (strcat "唉,我无法清理<A href="file://%22d//" target="_blank" >\\"d\\</A>"??,"<BR> "<A href="file://n/" target="_blank" >\\n</A>如果你知道!请通知我。"<BR> "<A href="file://nE_mail:cag25@sohu.com/" target="_blank" >\\nE_mail:cag25@sohu.com</A>"<BR> "<A href="file://nQQ:297240086/" target="_blank" >\\nQQ:297240086</A>"<BR> )<BR> )<BR> )<BR> (T<BR> (alert (strcat msg<BR> "<A href="file://n//n" target="_blank" >\\n\\n</A>对不起,有什么问题,请通知我。"<BR> "<A href="file://nE_mail:cag25@sohu.com/" target="_blank" >\\nE_mail:cag25@sohu.com</A>"<BR> "<A href="file://nQQ:297240086/" target="_blank" >\\nQQ:297240086</A>"<BR> )<BR> )<BR> )<BR> )<BR> )</P>
<P> (setq mSpace (vla-get-ModelSpace<BR> (vla-get-ActiveDocument (vlax-get-acad-object))<BR> )<BR> )<BR> (setq ss1 (ssadd))</P>
<P> (defun MakeUnNameBlock (ss pt / count entlist ent blk)<BR> (entmake (list '(0 . "BLOCK")<BR> '(2 . "*U")<BR> '(70 . 1)<BR> (cons 10 pt)<BR> )<BR> )<BR> (setq count 0)<BR> (repeat (sslength ss)<BR> (setq entlist (entget (setq ent (ssname ss count))))<BR> (setq count (1+ count))<BR> (entmake entlist)<BR> )<BR> (setq count 0)<BR> (repeat (sslength ss)<BR> (setq ent (ssname ss count))<BR> (setq count (1+ count))<BR> (entdel ent)<BR> )<BR> (setq blk (entmake '((0 . "ENDBLK"))))<BR> (if T<BR> (entmake (list (cons 0 "INSERT")<BR> (cons 2 blk)<BR> (cons 10 pt)<BR> )<BR> )<BR> )<BR> )</P>
<P> (defun Tzz (Text / textent ang sinrot cosrot t1 t2 p0 p1 p2 p3 p4)<BR> (setq textent (entget (vlax-vla-object->ename Text)))<BR> (setq p0 (cdr (assoc 10 textent))<BR> ang (cdr (assoc 50 textent))<BR> sinrot (sin ang)<BR> cosrot (cos ang)<BR> t1 (car (textbox textent))<BR> t2 (cadr (textbox textent))<BR> p1 (list<BR> (+ (car p0)<BR> (- (* (car t1) cosrot) (* (cadr t1) sinrot))<BR> )<BR> (+ (cadr p0)<BR> (+ (* (car t1) sinrot) (* (cadr t1) cosrot))<BR> )<BR> )<BR> p2 (list<BR> (+ (car p0)<BR> (- (* (car t2) cosrot) (* (cadr t1) sinrot))<BR> )<BR> (+ (cadr p0)<BR> (+ (* (car t2) sinrot) (* (cadr t1) cosrot))<BR> )<BR> )<BR> )<BR> (distance p1 p2)<BR> )</P>
<P> <BR> <BR> (setvar "cmdecho" 0)<BR> (initget 1)<BR> (setq p1 (getpoint "<A href="file://n/" target="_blank" >\\n</A>指定放大中心点"))<BR> (command "circle" p1)<BR> (princ<BR> (strcat "<A href="file://n/" target="_blank" >\\n</A>指定放大半径 <" (rtos (getvar "CIRCLERAD")) ">:")<BR> )<BR> (command pause)<BR> (setq newcircle (entlast))<BR> (setq cir (vlax-ename->vla-object (entlast)))<BR> (vla-put-color cir (getvar "dimclrd"))<BR> (vla-update cir)<BR> (ssadd (entlast) ss1)<BR> (setq cen (vlax-safearray->list<BR> (vlax-variant-value (vla-get-center cir))<BR> )<BR> )<BR> (setq pt (car cen))<BR> (princ "<A href="file://n/" target="_blank" >\\n</A>指定字符号放置位置 <左键或回车修改字符号>:")<BR> (setq i T)<BR> (while i<BR> (Setq NEXT_PT (GrRead T 4 0)<BR> READTYP (car NEXT_PT)<BR> READVAL (cadr NEXT_PT)<BR> )<BR> (cond<BR> ((= READTYP 5) ;移动<BR> (setq NEXT_PT (cadr NEXT_PT))<BR> (setq next_pt (trans next_pt 1 0))<BR> (setq basept (vlax-curve-getclosestpointto cir NEXT_PT))<BR> (if (not line)<BR> (progn<BR> (if (not fh)<BR> (setq fh "A")<BR> )<BR> (setq text (vla-addtext<BR> mspace<BR> fh<BR> (vlax-3d-point next_pt)<BR> (getvar "dimtxt")<BR> )<BR> )<BR> (vla-put-color text (getvar "dimclrt"))<BR> (vla-put-stylename text (getvar "dimtxsty"))<BR> (vla-update text)<BR> (ssadd (entlast) ss1)<BR> (setq line (vla-addline<BR> mspace<BR> (vlax-3d-point basept)<BR> (vlax-3d-point next_pt)<BR> )<BR> )<BR> (vla-put-color line (getvar "dimclrd"))<BR> (ssadd (entlast) ss1)<BR> (setq txtlen (tzz text))<BR> (setq l2end (list (+ (car next_pt) txtlen) (cadr next_pt) 0))<BR> (setq l2 (vla-addline<BR> mspace<BR> (vlax-3d-point next_pt)<BR> (vlax-3d-point l2end)<BR> )<BR> )<BR> (vla-put-color l2 (getvar "dimclrd"))<BR> (ssadd (entlast) ss1)<BR> )<BR> (progn<BR> (vla-put-startpoint line (vlax-3d-point basept))<BR> (vla-put-endpoint line (vlax-3d-point next_pt))<BR> (vla-update line)<BR> (setq ptt (car next_pt))<BR> (if (> ptt pt)<BR> (progn<BR> (setq text_x (+ (car next_pt) (getvar "dimgap")))<BR> (setq l2_x (+ (car next_pt) txtlen (getvar "dimgap")))<BR> )<BR> (progn<BR> (setq text_x (- (car next_pt) (getvar "dimgap") txtlen))<BR> (setq l2_x text_x)<BR> )<BR> )<BR> (vla-put-insertionpoint<BR> text<BR> (vlax-3d-point<BR> (list text_x (+ (cadr next_pt) (getvar "dimgap")) 0)<BR> )<BR> )<BR> (vla-update text)<BR> (vla-put-startpoint l2 (vlax-3d-point next_pt))<BR> (setq l2end (list l2_x (cadr next_pt) 0))<BR> (vla-put-endpoint l2 (vlax-3d-point l2end))<BR> (vla-update l2)<BR> )<BR> )<BR> )<BR> ((= READTYP 3) ;左键<BR>;;; (MakeUnNameBlock ss1 cen)<BR> (setq i nil)<BR> )<BR> ((or (= 25 readtyp) (= 13 READVAL)) ;回车或右键<BR> (setq fh1 fh)<BR> (setq fh (getstring (strcat<BR> "<A href="file://n/" target="_blank" >\\n</A>?入新字符号 <"<BR> fh<BR> ">:"<BR> )<BR> )<BR> )<BR> (if (= fh "")<BR> (setq fh fh1)<BR> )<BR> (vla-put-textstring text fh)<BR> (vla-update text)<BR> (setq txtlen (tzz text))<BR> (princ "<A href="file://n/" target="_blank" >\\n</A>指定字符号放置位置 <左键或回车修改字符字>:")<BR> )<BR> )<BR> )<BR> (fd)<BR> (bdycad)<BR> (princ)<BR>)</P>
<P><BR>(defun fd (/ minpt maxpt ss2)<BR> (vla-getboundingbox cir 'minpt 'maxpt)<BR> (setq minpt (vlax-safearray->list minpt)<BR> maxpt (vlax-safearray->list maxpt)<BR> )<BR> (setq ss2 (ssget "C" maxpt minpt))<BR> <BR> (command "copy" ss2 "" cen)<BR> (princ "<A href="file://n/" target="_blank" >\\n</A>指定放大图位置:")<BR> (command pause)<BR>;;; (if (not (command pause))<BR>;;;;;; (MakeUnNameBlock ss1 cen)<BR>;;; )<BR> )<BR>(defun bdycad()<BR> (defun GetPoints2004-04-22 (lst1 / pt lst1 )<BR> (while (setq lst1 (member (assoc 10 lst1) lst1))<BR> (setq pt (append pt (list (cdr (car lst1)))))<BR> (setq lst1 (cdr lst1)))<BR> pt<BR>)<BR>(setq ssb (ssget "x" (list (cons 10(getvar "lastpoint")) (assoc 40 (entget newcircle)))))<BR>(command ".POLYGON" 40 (getvar "lastpoint") "c" (+(cdr (assoc 40 (entget newcircle)))0.1))<BR>(setq polsel (entlast))<BR>(setq trimp (GetPoints2004-04-22 (entget polsel)))<BR>(progn ; 强行修剪 <BR>(command ".trim" ssb "" );"f" trimp)<BR>(setq it 0)<BR>(repeat (- (length trimp) 1)<BR> (setq trp1 (nth it trimp)<BR> trp2 (nth (1+ it) trimp))<BR> (command "f" trp1 trp2 "")<BR> (setq it (1+ it)))<BR>(command ""))<BR>(progn ; 强行删除<BR>(setq it 0)<BR>(repeat (- (length trimp) 1)<BR> (setq trp1 (nth it trimp)<BR> trp2 (nth (1+ it) trimp))<BR> (if (setq erase (ssget "f" (list trp1 trp2 )))<BR> (command ".erase" erase ""))<BR> (setq it (1+ it)))<BR>)<BR> (if (=(setq scalebb (getreal "<A href="file://n/" target="_blank" >\\n</A>输入放大的倍数<2>:"))nil)<BR> (setq scalebb 2))<BR>(command ".scale" (ssget "cp" trimp)"" (getvar "lastpoint") scalebb)<BR> (princ)<BR> )<BR></P> <P>快过春节了, 看到什么高兴! </P> 我来顶一下
页:
[1]