蓝图测绘 发表于 2013-11-30 10:52:58

和我的手动连续注记边长功能一样,点那边就注记在那边

风流少年时 发表于 2014-11-11 10:47:24

自己写的,中间还有点bug,希望大家看看,程序写的有点麻烦·····
(defun c:xxb ()
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setq en1 (car (setq ent (entsel "\n选择要写文字的线:"))))
(setq en (entget en1))
(setq pe (cadr ent))
(setq pt (osnap pe "near"))
(setq ab1 (getpoint "\n选择文字的方向:"))
(setq ang1 (angle pt ab1))
(setq pt10 (cdr (assoc 10 en)))
(setq pt11 (cdr (assoc 11 en)))
;;提取x,y
(setq a0 (car pt10))
(setq b0 (cadr pt10))
(setq a1 (car pt11))
(setq b1 (cadr pt11))
(setq aa (- a1 a0))
(setq bb (- b1 b0))
(if (/= aa 0)
    (progn
      (setq ba (/ bb aa))
      (setq ang (atan ba))
    )
    (progn
      (setq ang (/ pi 2))
    )
)
(setq r1 (getvar "userr1"))
(setq rr (* 250 (/ r1 100)))
(setq bb (* 2 r1))
(if(and (> ang1 -0.79) (< ang1 1.05))
;(if (>(- ang1 ang) (+ pi ang))
    (setq pt1 (polar pt (+ (* pi 1.5) ang) bb))
    (setq pt1 (polar pt (+ (/ pi 2) ang) bb))
)
(setq st (getstring "\n输入文字内容<200x400>:"))
(if (= st "")
    (setq st "200x400")
)
(command "text" "j" "mc" pt1 rr (* (/ ang pi) 180) st)
(prin1)
)
页: 1 [2]
查看完整版本: 如何生成平行于线的文字?