更新agian!
我已经走了相当远,但我的ssget“WP”点列表并不完全正确。我只是到处都是零。
修订过的:
- (defun c:p2f2 (/ p x y z j k
- fn ptlst ptcoord textloc cs_from cs_to file
- text filename rstr space xlen ylen
- zlen modspace
- )
- (setq dwgname (vl-filename-base (getvar "dwgname")))
- (setq date (menucmd "M=$(edtime,$(getvar,date),MO_DD_YY)"))
- (setq fn (getfiled "save DSN as..."
- (strcat "c:/DESIGN_DUMP/" dwgname "-" date)
- "dsn"
- 1
- )
- )
- (IF (/= fn nil)
- (while ;start while
- (setq p (getpoint "\nPick Point"))
- (setq cs_from 1)
- (setq cs_to 0)
- (setq p1 (trans p cs_from cs_to 0))
- (setq textloc (getpoint p "\tPLACE TEXT\n"))
- (setq rstr 12)
- (setq space (strcat " "))
- (setq x (rtos (car P1)))
- (setq y (rtos (cadr P1)))
- (setq z (rtos (caddr P1)))
- (setq xlen (strlen x))
- (setq ylen (strlen y))
- (setq zlen (strlen z))
- (setq modspacex (substr space 1 (- rstr xlen)))
- (setq modspacey (substr space 1 (- rstr ylen)))
- (setq modspacez (substr space 1 (- rstr zlen)))
- (setq wiggle 1.01)
- (setq xTEXT1 (+ (car P) wiggle))
- (setq xTEXT2 (- (car P) wiggle))
- (setq yTEXT1 (+ (cadr P) wiggle))
- (setq yTEXT2 (- (cadr P) wiggle))
- (setq zTEXT1 (+ (caddr P) wiggle))
- (setq zTEXT2 (- (caddr P) wiggle))
- (setq point1 (xtext1 ytext1 ztext1))
- (setq point2 (xtext1 ytext2 ztext1))
- (setq point3 (xtext1 ytext1 ztext2))
- (setq point4 (xtext1 ytext2 ztext2))
- (setq point5 (xtext2 ytext1 ztext1))
- (setq point6 (xtext2 ytext2 ztext1))
- (setq point7 (xtext2 ytext1 ztext2))
- (setq point8 (xtext2 ytext2 ztext2))
- (setq ptlst (list point1 point2 point3 point4
- point5 point6 point7 point8
- )
- )
- (setq k (ssget "_WP" ptlst))
- (if (= k nil)
- (setq k (rtos j 2 0))
- )
- (setq ptcoord (strcat k "\t" modspacex
- x "\t" modspacey
- y "\t" modspacez
- z "\t"
- )
- )
- (setvar "cmdecho" 0)
- (command "_leader" p textloc "" ptcoord "")
- (write-line ptcoord fn)
- (close fn)
- (princ ptcoord)
- (setq j (+ j 1))
- ) ;end while
- ) ;end if
- (setvar "cmdecho" 1)
- )
我不知道如何制作一个好的点列表。
如果我键入“(list xtext1 ytext1 ztext1)”
然后我得到一个stringp nil。。。。 |