我承认我没有测试它,但我要说的是,你需要从段数中减去2,然后在一层“Profile1”上画一条线,然后在“profile2”层上画n-2条线,然后在“Profile1”层上画最后一条线。
我想说的是,你需要修改Lee的代码,在例程中执行3个entmakex,在(repeat n)之前加1,在repeat函数结束后加1。
Lee建议帮助rekoj解决这个问题,请注意代码没有经过测试,因为目前没有autocad需要检查括号。
对于rekoj,使用defun“makeline”可以更容易地多次重复一个简单的函数,但只需更改一个变量。在这种情况下,可以添加更多的defun来放置圆块等,并且在不同的位置有不同的defun。使用此选项,您可以创建多行问题,而不是一次创建一行。
- (defun c:vlines2 ( / p1 p2 h i n v )
- (defun makeline (layans)
- (entmakex
- (list
- (cons 0 "LINE")
- (cons 8 layans)
- (cons 62 (if (or (= 1 i) (= n i)) 5 1))
- (cons 10 (trans p1 1 0))
- (cons 11 (trans (list (car p1) (+ (cadr p1) v) (caddr p1)) 1 0))
- )
- )
- (setq p1 (list (+ h (car p1)) (cadr p1) (caddr p1)) i (1+ i))
- )
- (if
- (and
- (setq p1 (getpoint "\nSpecify First Corner: "))
- (setq p2 (getcorner "\nSpecify Opposite Corner: " p1))
- (progn (initget 6) (setq n (getint "\nSpecify Number of Lines: ")))
- )
- (progn
- (setq h (if (= 1 n) 0. (/ (- (car p2) (car p1)) (1- n)))
- v (- (cadr p2) (cadr p1))
- i 1
- )
- (setq layans "profile1") ; 1st line
- (makeline layans)
- (setq layans "profile2") ;n-2 lines
- (repeat n
- (makeline layans)
- )
- (setq layans "profile1") ; last line
- (makeline layans)
- )
- )
- (princ)
- )
|