piao1887 发表于 2009-8-3 09:59:00

[求助]大家帮我看看问题在哪里

(defun c:zyzj ()
(setq dimzin (getvar "dimzin"))
(setvar "dimzin" 0)
(setq fact (getreal "\n全加(1),部分(0)?_(0)?"))
(if (not fact)
    (setq fact 0)
)
(setq ss (ssget "X" '((8 . "*LINE"))))
(if (/= ss nil)
    (progn
      (setq n 0)
      (setq num (sslength ss))
      (while (< n num)
(setq ent (ssname ss n))
(setq ent1 (vlax-ename->vla-object ent))
(setq objname (vla-get-ObjectName ent1))
(setq tcm (vla-get-Layer ent1))
(setq gxlb (substr tcm 1 2))
(setq long (vla-get-length ent1))
(SETQ tc (STRCAT gxlb "MARK"))
(setvar "CLAYER" tc)
(setq xdata (entget ent '("xdata1")))
(setq xdata (cdr (last (last (last xdata)))))
(setq xdata0 (ln1_lst xdata ","))
(setq spnt (nth 17 xdata0))
(setq epnt (nth 18 xdata0))
(setq material (nth 11 xdata0))
(setq dsize (nth 12 xdata0))
(setq hole (nth 13 xdata0))
(setq xh (vl-string-position (ascii "/") hole))
(setq hole (substr hole 1 xh))
(setq hole (strcat hole "孔"))
(setq cab (nth 16 xdata0))
(if (= (vl-string-position (ASCII "/") CAB) NIL)
   (setq cab (strcat cab "根"))
)
(setq prange (nth 15 xdata0))
(setq tgcc (nth 26 xdata0))
(setq type1 (nth 9 xdata0))
(setq data0 (strcat spnt "," epnt))
(if (OR (= gxlb "JS")
(= gxlb "YS")
(= GXLB "WS")
(= GXLB "HS")
(= GXLB "GY")
   )
   (progn
   (setq Xposizion (vl-string-position (ascii "X") dsize))
   (if (= xposizion nil)
       (setq dsize (strcat "DN" dsize))
   )
   (setq txt (strcat material " " dsize))
   )
)
(IF (or (= gxlb "MQ")
(= GXLB "TQ")
(= GXLB "YQ")
   )
   (PROGN
   (setq xposizion (vl-string-position (ascii "X") dsize))
   (if (= xposizion nil)
       (setq dsize (strcat "DN" dsize))
   )
   (setq txt (strcat material " " dsize " " prange))
   )
)
(if (or (= gxlb "RS")
(= GXLB "ZQ")
   )
   (PROGN
   (setq xposizion (vl-string-position (ascii "X") dsize))
   (if (= xposizion nil)
       (setq dsize (strcat dsize "+" tgcc))
   )
   (setq txt (strcat material " " dsize))
   )
)
(if (or (= gxlb "GD")
(= GXLB "LD")
(= GXLB "XD")
   )
   (progn
   (if (= material "")
       (setq material "空管")
   )
   (setq xposizion (vl-string-position (ascii "X") DSIZE))
   (if (= xposizion nil)
       (setq dsize (strcat "Φ" dsize))
   )
   (if (= type1 "0")
       (setq txt (strcat material " " dsize " " cab " " prange))
   )
   (if (/= type1 "0")
       (setq txt (strcat material " " dsize " " hole " " prange))
   )
   )
)
(if (or (= gxlb "DX")
(= gxlb "YX")
(= gxlb "LX")
(= gxlb "JX")
(= GXLB "BX")
(= GXLB "KX")
(= GXLB "TV")
   )
   (progn
   (if (= material "")
       (setq material "空管")
   )
   (setq xposizion (vl-string-position (ascii "X") DSIZE))
   (if (= xposizion nil)
       (setq dsize (strcat "Φ" dsize))
   )
   (if (= type1 "0")
       (setq txt (strcat material " " dsize " " cab))
   )
   (if (/= type1 "0")
       (setq txt (strcat material " " dsize " " hole))
   )
   )
)
(if (> long 20)
   (progn
   (setq qdzb (vla-get-startpoint ent1))
   (setq qdzb (vlax-variant-value qdzb))
   (setq xq (vlax-safearray-get-element qdzb 0))
   (setq yq (vlax-safearray-get-element qdzb 1))
   (setq zdzb (vla-get-endpoint ent1))
   (setq zdzb (vlax-variant-value zdzb))
   (setq xz (vlax-safearray-get-element zdzb 0))
   (setq yz (vlax-safearray-get-element zdzb 1))
   (setq qdzb (list xq yq 0))
   (setq zdzb (list xz yz 0))
   (setq zjjd (angle qdzb zdzb))
   (if (and (> zjjd (/ pi 2))
       (< zjjd (* pi 1.5))
)
       (progn
(setq ss qdms)
(setq qdms zdms)
(setq zdms ss)
(setq zjjd (- zjjd pi))
       )
   )
   (if (= fact 1)
       (progn
(setq xzj (/ (+ xq xz) 2))
(setq yzj (/ (+ yq yz) 2))
       )
   )
   (if (= fact 0)
       (progn
(setq yzj (atof (nth 22 xdata)))
(setq xzj (atof (nth 23 xdata)))
       )
   )
   (if (and (/= xzj 0) (/= yzj 0))
       (progn
(setq zjzb (list xzj yzj 0))
(setq zjzb (vlax-3d-point zjzb))
(setq zj1 (vla-addtext (model-space) txt zjzb 0.8))
(setq
    exdata
   (list (list -3 (list "xdata1" (cons '1000 xdata))))
)
(setq exdata0
         (list (list -3 (list "LNUMBER" (cons '1000 data0))))
)
(setq lastent (entget (entlast)))
(setq newdata
         (append lastent exdata)
)
(entmod newdata)
(setq newdata0
         (append lastent exdata0)
)
(entmod newdata0)
(vlax-put-property
    ZJ1
    'VerticalAlignment
    acVerticalAlignmentBottom
)
   ;垂直下对齐
(vlax-put-property
    ZJ1
    'HorizontalAlignment
    acHorizontalAlignmentCenter
)
   ;水平中对齐
(vla-put-TextAlignmentPoint ZJ1 ZJZB)
   ;对齐点
(vla-put-Rotation zj1 zjjd)
       )
   )
   )
)
(setq n (+ n 1))
      )
    )
)
(setvar "dimzin" dimzin)
(setvar "CLAYER" "0")
(princ)
)
大家帮我看看这段代码 我需要实现的是从线的扩展数据中读取一定的字符串 然后标注到线段的中间位置, 但是循环读取选择集选择之后读取第二条线时,第三条读取就会失败 但是我单独读取第三条线 可以读出来 大家帮我看看问题出在哪里
页: [1]
查看完整版本: [求助]大家帮我看看问题在哪里