;;;by An Yuhui ;;;1-25-1996 ;;;Function:Continue Dimension ;;;********** (defun c:dimcont() (setq spt(getpoint ″\nFirst point:″)) (setq ept(getpoint spt ″\nEnd point:″)) (setq just-ang(angle spt ept)) (setq ss(ssget ″F″(list spt ept))) (setq index 0 ptlist nil) (while (setq et (ssname ss index)) (if(=(cdr (assoc 0 (entget et))) ″POLYLINE″) (progn (command ″EXPLODE″et) (setq et(entlast)) ) ) (setq etlist (entget et)) (setq pt1(getvalue 10 etlist)) (setq pt2(getvalue 11 etlist)) (setq ptlist(cons (inters pt1 pt2 spt ept nil)ptlist)) (setq index(1+index)) ) (setq ptlist(sort1 ptlist)) (setq lastpt(car ptlist)) (setq ptlist(cdr ptlist)) (while(setq pt (car ptlist)) (cond((or(=just-and0) (=just-ang pi)) (command ″dim1″ ″hor″ lastpt pt pt ″″) (setq ptlist(cdr ptlist)) (setq lastpt pt) ) ((or (=just-ang (*pi 0.5)) (=just-ang(* pi 1.5))) (command ″dim1″ ″ver″ lastpt pt pt ″″) (setq ptlist(cdr ptlist)) (setq lastpt pt) ) ) ) (princ) ) 4.任意转换两个字符的位置 笔者在绘图时常常会遇到需要改变文本标注和说明位置的情况, 有时是两个文本字符位置的互换,有时是材料表中两行材料名的位置 互换。用一般的方法,是先把第一行文本move到一个位置,再把第二行 文本move到第一行文本原来的位置,最后再移动第一行文本到第二行 文本原来的位置,每次做起来总感到不方便,而且由于移动时的误差, 位置总是对不准。因此,笔者用AutoLisp编了一个小程序,用于解决这 个问题。每次使用时只要选择一下文本,再按回车,即能成功地转换二 个文本的位置。笔者在使用时获益非浅,现把它介绍给大家。 ;;;Filenmae:chgtp.lsp :::By An Yuhui ;;;7-19-1995 ;;;Function:change two text position ;;;********** (defun c:chgtp() (setq el(ssget)) (setq len (sslength el)) (if (>len2) (progn (alert ″To Many Texts!″) (exit) ) ) (setq en1 (ssname el 0)) (setq en2 (ssname el 1)) (setq el1 (entget en1)) (set pt1 (cdr (assoc 10 el1))) (setq el2 (entget en2)) (setq pt2 (cdr (assoc 10 el2))) (command ″move″ en1 ″″ pt1 pt2) |