我有一个相当简单的任务,我取得了良好的进展,直到。。。
任务是提出一个lisp例程,该例程将绘制各种角钢的剖面图。这并不太难,但现在我需要将所有的直线和圆弧连接成一个实体,这样我就可以复制、镜像、移动等等。。。轻松自如。
现在,你们所有知道我的“全自动”程序的人都记得,这正是那个。完全自动化。不允许用户输入。也就是说,我已经走了多远:
- (defun DrawAngleSection ( pt l1 l2 angThk)
- (command-s "._CLAYER" "Angles")
- (setq a90 (dtr 90.) a270 (dtr 270.))
- (command-s "._LINE"
- (polar pt a270 (- angThk (- angThk 0.0625))) pt (polar pt 0 l1) (polar (polar pt 0 l1) a270 l2) (polar (polar pt 0 (- l2 (- angThk (- angThk 0.0625)))) a270 l1) "")
- (command-s "._LINE"
- (polar (polar pt 0 (- angThk 0.0625)) a270 angThk) (polar (polar pt 0 (- l1 (* angThk 2))) a270 angThk) "")
- (command-s "._LINE"
- (polar (polar pt 0 (- l1 angThk)) a270 (* angThk 2)) (polar (polar pt 0 (- l1 angThk)) a270 (- l2 (- angThk 0.0625))) "")
- (Arc
- (polar (polar pt 0 (- angThk 0.0625)) a270 (- angThk (- angThk 0.0625)))
- (- angThk 0.0625)
- pi
- a270
- )
- (Arc
- (polar (polar pt 0 (- l2 (- angThk (- angThk 0.0625)))) a270 (- l1 (- angThk 0.0625)))
- (- angThk 0.0625)
- pi
- a270
- )
- (Arc
- (polar (polar pt 0 (- l1 (* angThk 2))) a270 (* angThk 2))
- angThk
- 0
- a90
- )
- (setq x (sssetfirst nil (ssget "X" (list (cons 8 (getvar "clayer"))))))
- [color=red] ;;; HERE'S WHERE I GET LOST. HOW DO I GATHER ALL THIS UP AND
- ;;; CREATE A SINGLE POLYLINE, OR EVEN SHOVE IT INTO A BLOCK
- ;;; ANY WAY SO I CAN DO THINGS WITH IT AS A SINGLE OBJECT.... [/color]
- (princ)
- ); end DrawAngleSection
- (defun Arc (cen rad sAng eAng)
- (entmakex (list (cons 0 "ARC")
- (cons 10 cen)
- (cons 40 rad)
- (cons 50 sAng)
- (cons 51 eAng))))
- (defun dtr ( deg ) (* pi (/ deg 180.0)))
顺便提一下我仍然有工作要做,因为它不适合不等边的角度。 |