如何获得这些分数?
你好希望有人能指导我如何获得这些点(p1,p2,p3,p4),如所附图像中所示的平行点,起点和终点代表矩形的中心线。
这就是我的开始。。。。。。
Wid参数表示矩形两侧的偏移距离
当做
迈克尔
使用极轴函数计算垂直于起点和终点的点。对于角度计算,使用从开始到结束的角度加上半pi和负半pi,以产生所需的合成角度。
希望这有帮助! 非常感谢。 也许是这样。。。。。。。
(setq OffDist (getreal "\nOffset Distance...: "))
PtA (getpoint "\nPick point 1: ")
PtB (getpoint PtA "\nPick point 2: ")
PtAng (angle PtA PtB)
Pt1 (polar PtA (+ PtAng (* 0.5 pi)) OffDist)
Pt2 (polar PtA (- PtAng (* 0.5 pi)) OffDist )
Pt3 (polar PtB (+ PtAng (* 0.5 pi)) OffDist)
Pt4 (polar PtB (- PtAng (* 0.5 pi)) OffDist )
);setq
(command "pline"pt1 Pt3 "")
(command "pline"Pt2 pt4"") 很无意义,但写起来很有趣
(defun c:test ( / w p g a q l )
(if
(and
(setq w (getdist "\nSpecify Width: "))
(setq w (/ w 2.) p (getpoint "\nSpecify First Point: "))
(while (= 5 (car (setq g (grread 't 13 0)))) (redraw) (setq a (angle p (setq q (cadr g))))
(grvecs
(setq l
(list 256
(polar p (+ a (/ pi 2.)) w) (polar q (+ a (/ pi 2.)) w)
(polar p (- a (/ pi 2.)) w) (polar q (- a (/ pi 2.)) w)
)
)
)
l
)
)
(mapcar
(function
(lambda ( p q )
(entmakex (list (cons 0 "LINE") (cons 10 (trans p 1 0)) (cons 11 (trans q 1 0))))
)
)
(list (cadrl) (cadddr l))
(list (caddr l) (car (cddddr l)))
)
)
(redraw) (princ)
)
(defun c:test (/ p1 p2 of)
(setq p1 (getpoint "\nSpecify first point: ")
p2 (getpoint p1 "\nSpecify second point: ")
of (getint "\nSpecify offset distance: "))
(entmake
(list
(cons 0 "line")
(cons 10 (polar p1 (+ (angle p1 p2)(angtof "270.000000")) of))
(cons 11 (polar p2 (+ (angle p1 p2)(angtof "270.000000")) of))
)
)
(entmake
(list
(cons 0 "line")
(cons 10 (polar p1 (+ (angle p1 p2)(angtof "90.000000")) of))
(cons 11 (polar p2 (+ (angle p1 p2)(angtof "90.000000")) of))
)
)
(princ)
) 谢谢大家,非常感谢你们的帮助。
我是在发布帮助后做的,它似乎与其他代码完全不同。
这样可以吗,或者我必须改变任何一个?
(setq wid (getdist "\n Width of Distance :"))
(setq c1 (getpoint "\n Specify Center point 1 :"))
(setq c2 (getpoint "\n Specify Center point 2 :" c1))
(setq ang (angle c1 c2))
(setq p1 (polar c1 (+ pi (/ pi 2) ang) (/ wid 2)))
(setq p2 (polar p1 ang (distance c1 c2)))
(setq p3 (polar c1 (+ (/ pi 2) ang)(/ wid 2)))
(setq p4 (polar p3 ang (distance c1 c2)))
非常感谢。 看起来不错。。。。剥猫皮的方法有很多。
在代码运行时不要忘记将osmode设置为零,否则可能会发生错误。
旧金山
老实说,我会完全避免命令调用-输入像Lines/LwPolyline这样的对象很容易学习,不仅比命令调用快10倍,而且还避免了OSMODE的问题,因此在大多数情况下也避免了需要专用错误处理程序(重置系统变量)。
李 谢谢大家的关注,非常感谢你们的回复。
谢谢李,我同意你的观点,因为entmak'ing比Lisp中的任何命令都要好得多,我正在做
我尽量避免使用命令而不是od Entmakes函数。除此之外,它会给我更多的学习经验
处理Lisp的一般方法。
非常感谢。
迈克尔
页:
[1]
2