我试图记住这篇文章,但我用lisp在多段线内选择了文本。修改它应该很简单,可以找到一个块并更新属性,这是第2部分。
这是一个开始,需要修改以寻找插入,发布的dwg没有关于要替换的内容的信息,需要更多详细信息。
- ; this is not finished code
- (vl-load-com)
- (defun getcoords (ent)
- (vlax-safearray->list
- (vlax-variant-value
- (vlax-get-property
- (vlax-ename->vla-object ent)
- "Coordinates"
- )
- )
- )
- )
- (defun co-ords2xy ()
- ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
- (setq numb (/ (length co-ords) 2))
- (setq I 0)
- (repeat numb
- (setq xy (list (nth I co-ords)(nth (+ I 1) co-ords) ))
- (setq coordsxy (cons xy coordsxy))
- (setq I (+ I 2))
- ) ; end repeat
- ) ; end defun
- ; program starts here
- ; choose output file change acdatemp to what you want
- (setq plobjs (ssget (list (cons 0 "lwpolyline"))))
- (setq numb1 (sslength plobjs))
- (setq x numb1)
- (repeat numb1
- (setq obj (ssname plobjs (setq x (- x 1))))
- (setq co-ords (getcoords obj))
- (co-ords2xy)
- ; write pline co-ords here
- (setq numb3 (length co-ords))
- (setq z numb3)
- (setq ansco-ords "")
- (repeat numb3
- (setq ansco-ords (strcat ansco-ords (rtos (nth (setq z (- z 1)) co-ords) 2 3 ) " " ))
- )
- (setq ans (strcat "Pline " ansco-ords))
- (write-line ans fout)
- (setq ansco-ords "")
- (setq ss (ssget "WP" coordsxy (list (cons 0 "Insert")))) ; selection set of Blocks within polygon
- (if (= ss nil)
- (princ "\nnothing inside")
- (progn
- (setq coordsxy nil) ; reset for next time
- (setq numb2 (sslength ss))
- (setq y numb2)
- (repeat numb2
- ; this where you would do attrib bit
- (princ "\n")
- ) ; end repeat2
- (setq ss nil) ; reset for next poly
- )
- )
- ) ; end repeat1
- (close fout)
- (princ)
|