LM,
我还对这个lisp感兴趣,可以删除tieptouch描述的重叠文本。为了理解重叠文本,测量员在地面上拾取了一堆点。然后将其传输到测量软件,该软件生成特定高度的所有文本(例如,在autocad上为1.6m)。尤其是道路,两侧都有排水沟和路堑。因此,将拾取许多点,如道路边缘、护栏、排水沟右侧、排水沟倒置、排水沟左侧、切割底部、切割顶部等。文本(即代码、点编号和点高程)-但我们正在查看的将是文本高程。因为将显示所有文字高程,这会导致重叠。因为我们需要随机删除文本提升,所以最终它看起来很好,如tieptouch所示。所以删除哪一点无关紧要。
希望这个解释清楚。谢谢
总成 你可以用这样的东西:
(defun c:FText (/ ent ent1 i lst newlayer ofset ss ss1 ss_tmp ans)
;|By Gia Bach 2010|;
(defun GetBound (ent ofs / ang elist ll lr tb tb1 tb2 ul ur)
(setq elist (entget ent)
ang (cdr (assoc 50 elist))
tb (textbox elist)
tb1 (car tb)
tb2 (cadr tb)
ll (polar (cdr (assoc 10 elist))
(+(angle '(0 0) tb1) ang) (DISTANCE '(0 0) tb1))
lr (polar ll ang (- (car tb2) (car tb1)))
ur (polar ll (+ ang (angle tb1 tb2)) (distance tb1 tb2))
ul (polar ll (+ ang (/ pi 2)) (- (cadr tb2) (cadr tb1))) )
(setq ang (angle ll lr) )
(setq ll (polar ll (- ang (* pi 0.75)) (sqrt (* (* ofs ofs) 2)))
lr (polar lr (- ang (/ pi 4)) (sqrt (* (* ofs ofs) 2)))
ur (polar ur (+ ang (/ pi 4)) (sqrt (* (* ofs ofs) 2)))
ul (polar ul (+ ang (* pi 0.75)) (sqrt (* (* ofs ofs) 2))) )
(list ll lr ur ul))
(command "_.undo" "be")
(setq ss (ssget (list (cons 0 "TEXT"))) ss1 (ssadd) )
(or *ofset (setq *ofset 0.5))
(initget 4)
(setq ofset (getreal (strcat "\nDistance Textbox offset: <" (rtos *ofset) ">")))
(if (= ofset nil) (setq ofset *ofset) (setq *ofset ofset))
(while (> (sslength ss) 0)
(setq ent (ssname ss 0)
lst (GetBound ent ofset) )
(ssdel ent ss)
(if (setq ss_tmp (ssget "cp" lst (list(cons 0 "TEXT"))))
(progn
(setq i -1)
(while (setq ent1 (ssname ss_tmp (setq i (1+ i))))
(if (not (equal ent ent1))
(progn
(ssadd ent1 ss1)
(if (ssmemb ent1 ss) (ssdel ent1 ss)) ))) ) ) )
(if (> (sslength ss1) 0)
(progn
(setq newlayer "Text_Filter")
(if (not (tblsearch "layer" newlayer))
(command "-layer" "n" newlayer "c" 2 newlayer "") )
(command "change" ss1 "" "p" "la" newlayer "") ) )
(setq ans (getstring "\n Do you want to Erase all of Dup Text ? <Y>"))
(if (or (= ans "") (not ans) (= (strcase ans) "Y")) (command ".erase" ss1 "") T)
(command "_.undo" "e")
(princ))
它将根据您选择的距离(从textbox的偏移量)过滤重叠的文本,并将所有找到的文本更改为layer text_Filter,并让您决定是否删除。要保留的文本属于创建类 非常感谢Ketxu。这就是我需要的。再次感谢你。
页:
1
[2]