在不 能否编写一个CAD自动根据标注的标高和标高之间的距离或者道路中线来计算坡度并标注的LSP插件?
发布网友
发布时间:2022-07-27 05:11
我来回答
共2个回答
热心网友
时间:2023-10-24 23:38
(defun c:nn (/ a a1 d dx dy i os p1 p2 pmid str stri)
(princ "\n欢迎使用坡度标注程序! gysjy 2009.6.27. ")
(command "undo" "g")
(setq os (getvar "osmode"))
(setvar "osmode" 1)
(initget "G S")
(setq k (getkword "\n[百分率(G)/比例(S)]:<G>"))
;;; 箭头相关的参数
(setq al1 6.5
;;;上面的变量是箭线长度一半,可以修改
al2 3.0
;;;箭头长度
aw 0.2
;;;箭头宽度
al3 1.0
;;;箭线到待标线距离
al4 3.5
;;;文本到直线的距离
;;;以上的参数可以进行修改,注释在下,参数在上
)
(mm k al1 al2 aw al3 al4)
)
(defun mm (k al1 al2 aw al3 al4)
(setq p1 (getpoint "\n第一点:")
)
(if (= nil p1)
(quit)
)
(setq
p2 (getpoint "\n第二点:" p1)
)
(if (= nil p2)
(quit)
)
(setq
a (angle p1 p2)
d (/ (distance p1 p2) 2)
pmid (polar p1 a d)
at (if (and (> a 1.571) (< a 4.713))
(- a pi)
a
)
aa (+ at (* 0.5 PI))
ap1 (polar (polar pmid a (- al1)) aa al3)
;;;箭线起点
ap2 (polar (polar pmid a al1) aa al3)
;;;箭线终点
ap3 (polar ap2 a (- al2))
;;;箭头终点辅助点
;;;
ap4 (polar ap3 aa (* al2 aw))
;;;箭头终点
;;; ap5 (polar ap3 (+ a 1.57) (* al2 -0.2))
pmid (polar pmid aa al4)
;;; a (* a 57.3)
dx (- (car p1) (car p2))
dy (- (cadr p1) (cadr p2))
)
(if (= k "G")
(setq
i (if (= dx 0)
10000
(* 100 (abs (/ dy dx)))
)
stri (rtos i 2 1)
str (if (= dx 0)
"垂直"
(strcat "i=" stri "%")
)
)
(setq i (if (= dx 0)
0
(abs (/ dy dx))
)
stri (rtos i 2 2)
str (if (= dx 0)
"垂直"
(strcat "i=1:" stri)
)
)
)
(setvar "osmode" os)
;;; (grdraw p1 p2 2)
;;;;;; (command "text" "j" "m" pmid "2.5" a str)
(entmake (list
'(0 . "TEXT")
'(8 . "箭头")
'(40 . 2.5)
'(72 . 4)
'(73 . 0)
(cons 50 at)
(cons 1 str)
(cons 10 pmid)
(cons 11 pmid)
)
)
;;;添加箭头
(entmake (list
'(0 . "LINE")
'(8 . "箭头")
(cons 10 ap1)
(cons 11 ap2)
)
)
(entmake (list
'(0 . "LINE")
'(8 . "箭头")
(cons 10 ap2)
(cons 11 ap4)
)
)
(mm k al1 al2 aw al3 al4)
(command "undo" "e")
(princ)
)
热心网友
时间:2023-10-24 23:38
完全可以编写CAD自动根据标注的标高和标高之间的距离或者道路中线来计算坡度并标注的LSP插件,你私信我啊来自:求助得到的回答