乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 112|回复: 6

[编程交流] 变量保持不变

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:25:39 | 显示全部楼层 |阅读模式
我正在编写一个程序,将绘制管道或法兰(平面或立面),并使用“IF”脚本设置变量:
 

  1.    (if
  2.            (= pipesize 100)
  3.                (progn
  4.                    (setq
  5.                          pipeod   114.3
  6.                          pipeid    102.3
  7.                    ) ; end setq
  8.                ) ; end progn
  9.         ) ; end if

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

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 17:43:01 | 显示全部楼层
不知道你在做什么,因为没有足够的信息给我。
但是我猜你将设置一组管道尺寸,我会这样做
类似这样:
 
  1. ;;  var pipes = the pipe Size
  2. ;;                      [size OD ID]
  3. (setq PipeSizes '((100 114.3 102.3)
  4.                  (200 214.3 202.3)
  5.                  (300 314.3 302.3)
  6.                  ))
  7. (if (setq data (assoc pipes PipeSizes))
  8.   (setq pipeod  (cadr data)
  9.         pipeid  (caddr data))
  10.   (alert "Error - No pipe size in list")
  11. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:47:56 | 显示全部楼层
啊,谢谢CAB,一如既往地非常感谢。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 18:03:46 | 显示全部楼层
不客气。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

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

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 18:22:42 | 显示全部楼层
我已经在一个新的帖子下发布了这个新问题,因为我认为这可能会更好。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 18:30:45 | 显示全部楼层
这允许多线圆角。它使用3个拾取来计算圆角方向。在双线相交的地方,有4个圆角选项
  1. (setq ncr (getpoint "\npick point on inside near corner: "))
  2. (command "zoom" "c" ncr zsc)
  3. ;perrp is 128
  4. (setq old_mode (getvar "osmode"))
  5. (setvar "osmode" 512)
  6. ;(command "osnap" "near")
  7. (princ "\nPick 1st inner wall: ")
  8. (COMMAND "_.LINE" ncr "_perp" pause "")
  9. (setq tp1 (getvar "lastpoint"))
  10. (setq tpp1 (entget (entlast)))
  11. (setq pt1 (cdr (assoc 10 tpp1)))
  12. (setq pt2 (cdr (assoc 11 tpp1)))
  13. ; check that angle is 90 in correct direction
  14. (SETQ ANG1 (ANGLE pt1 pt2))
  15. (COMMAND "ERASE" "L" "")
  16. (princ "\nPick  2nd inner wall: ")
  17. (COMMAND "_.LINE" ncr "_perp" pause "")
  18. (setq tp2 (getvar "lastpoint"))
  19. (setq tpp2 (entget (entlast)))
  20. (setq pt3 (cdr (assoc 10 tpp2)))
  21. (setq pt4 (cdr (assoc 11 tpp2)))
  22. ; check that angle is 90 in correct direction
  23. (SETQ ANG2 (ANGLE pt3 pt4))
  24. (COMMAND "ERASE" "L" "")
  25. (setvar "osmode" 0)
  26. (command "fillet" tp1 tp2)
  27. (setq tp3 (polar tp1 ang1 w4))
  28. (setq tp4 (polar tp2 ang2 w4))
  29. (command "fillet" tp3 tp4)  

 
只需将w4替换为您的宽度
 
我有另一个lisp试图找到它,将任何数量的圆角多行,不需要知道平行线的宽度,它使用一个起点,然后拖动一条线在第一组,然后第二组嘿,普雷斯托所有圆角。如果有用的话,我可以告诉你,它使用一条新线与旧线的交点,使用起来非常快。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 16:45 , Processed in 0.565747 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表