ketxu 发表于 2022-7-6 09:44:25

 
嗨,谢谢李。请告诉我是什么代码决定了要做哪些[+/-]?
零件编号:
哦,我发现它属于g2。
再次感谢

rekoj 发表于 2022-7-6 09:47:27

我喜欢Lee Mac在whit[+/-]中做的事情,尝试学习这个,并将其用于我的Lisp(谈论垂直线案例)。但是现在,有谁能帮我想一想,如何从两边只画两条线——蓝色,其他的,中间的红色。。。?

Lee Mac 发表于 2022-7-6 09:50:00

 
这当然不是我的意图——我希望其他人能从我发布的示例中学习,不要因此而气馁。

SLW210 发表于 2022-7-6 09:54:29

Qonfire,请使用代码标签!!!

BIGAL 发表于 2022-7-6 09:56:25

Rekoj看我的上一篇帖子,我按你的要求做了。

rekoj 发表于 2022-7-6 10:01:17

BIGAL不知怎的,它对我不起作用。。。现在不管我输入多少行,它总是得到一行没有任何颜色的。。就这样给我吗?

Lee Mac 发表于 2022-7-6 10:02:38

在第8篇文章中快速修改了我的代码:
 
(defun c:vlines ( / p1 p2 h i n v )
(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
   )
   (repeat n
       (entmakex
         (list
         (cons 0 "LINE")
         (cons 8 "Profile")
         (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))
   )
   )
)
(princ)
)

BIGAL 发表于 2022-7-6 10:07:00

我承认我没有测试它,但我要说的是,你需要从段数中减去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)
)

Lee Mac 发表于 2022-7-6 10:08:34

使用计数器(如我在文章#17中的代码)应该不需要有多个重复循环。

rekoj 发表于 2022-7-6 10:12:04

此外,当我在BIGALS的lisp中输入行数时,它们不是在蓝色的中间绘制的,而是在外部绘制的。
 
顺便说一句,Le Mac,也许你有机会一步一步地解释一下你在第#7篇文章中所做函数的含义。已经是第二天了,我正在尝试探索Lisp程序,并将线条方向从水平方向更改为垂直方向。。但我真的迷路了,当我试图弄清楚什么是什么东西的时候。。当我按我认为应该的方式更改它时,该程序不起作用或根本不起作用。。。
页: 1 [2]
查看完整版本: lisp正在计算吗?