Lee Mac 发表于 2022-7-6 17:25:39

变量保持不变

我正在编写一个程序,将绘制管道或法兰(平面或立面),并使用“IF”脚本设置变量:
 

   (if
         (= pipesize 100)
               (progn
                   (setq
                         pipeod   114.3
                         pipeid    102.3
                   ) ; end setq
               ) ; end progn
      ) ; end if
 
然后,程序将使用这些值绘制管道(平面或高程)。
 
然而,有时当我选择不同的管道尺寸时,变量与选择前一个管道尺寸时保持不变(即使程序告诉它们设置不同)。
 
(希望这一切都有意义!)
 
有什么想法吗?

CAB 发表于 2022-7-6 17:43:01

不知道你在做什么,因为没有足够的信息给我。
但是我猜你将设置一组管道尺寸,我会这样做
类似这样:
 
;;var pipes = the pipe Size
;;                     
(setq PipeSizes '((100 114.3 102.3)
               (200 214.3 202.3)
               (300 314.3 302.3)
               ))
(if (setq data (assoc pipes PipeSizes))
(setq pipeod(cadr data)
      pipeid(caddr data))
(alert "Error - No pipe size in list")
)

Lee Mac 发表于 2022-7-6 17:47:56

啊,谢谢CAB,一如既往地非常感谢。

CAB 发表于 2022-7-6 18:03:46

不客气。

Lee Mac 发表于 2022-7-6 18:13:42

在这一切之后,我发现我的变量保持不变的原因是我重复了一个变量名。问题解决了!
 
然而,我现在有另一个问题。。。。(我听到你呻吟……)
 
我已经尝试附加LISP,但文件大小为23.4KB,因此我将尽可能解释我的问题。问题出在“圆角”部分。我无法让程序对选定的线进行圆角,结果我只得到一个实体名称。
 
我绘制了一个凸缘的立面,在创建每条线后,我使用entlast命令为该图元指定了一个变量。
 
然后,我尝试使用半径为2的线对进行圆角。然而,当我尝试圆角时,返回一个实体名称,并且线没有圆角。
 
任何帮助都将不胜感激。

Lee Mac 发表于 2022-7-6 18:22:42

我已经在一个新的帖子下发布了这个新问题,因为我认为这可能会更好。

BIGAL 发表于 2022-7-6 18:30:45

这允许多线圆角。它使用3个拾取来计算圆角方向。在双线相交的地方,有4个圆角选项
(setq ncr (getpoint "\npick point on inside near corner: "))
(command "zoom" "c" ncr zsc)
;perrp is 128
(setq old_mode (getvar "osmode"))
(setvar "osmode" 512)
;(command "osnap" "near")
(princ "\nPick 1st inner wall: ")
(COMMAND "_.LINE" ncr "_perp" pause "")
(setq tp1 (getvar "lastpoint"))
(setq tpp1 (entget (entlast)))
(setq pt1 (cdr (assoc 10 tpp1)))
(setq pt2 (cdr (assoc 11 tpp1)))
; check that angle is 90 in correct direction
(SETQ ANG1 (ANGLE pt1 pt2))
(COMMAND "ERASE" "L" "")
(princ "\nPick2nd inner wall: ")
(COMMAND "_.LINE" ncr "_perp" pause "")
(setq tp2 (getvar "lastpoint"))
(setq tpp2 (entget (entlast)))
(setq pt3 (cdr (assoc 10 tpp2)))
(setq pt4 (cdr (assoc 11 tpp2)))
; check that angle is 90 in correct direction
(SETQ ANG2 (ANGLE pt3 pt4))
(COMMAND "ERASE" "L" "")
(setvar "osmode" 0)
(command "fillet" tp1 tp2)
(setq tp3 (polar tp1 ang1 w4))
(setq tp4 (polar tp2 ang2 w4))
(command "fillet" tp3 tp4)
 
只需将w4替换为您的宽度
 
我有另一个lisp试图找到它,将任何数量的圆角多行,不需要知道平行线的宽度,它使用一个起点,然后拖动一条线在第一组,然后第二组嘿,普雷斯托所有圆角。如果有用的话,我可以告诉你,它使用一条新线与旧线的交点,使用起来非常快。
页: [1]
查看完整版本: 变量保持不变