乐筑天下

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

[编程交流] 绘制电缆槽T连接

[复制链接]

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 16:07:38 | 显示全部楼层 |阅读模式
大家好
我需要帮助创建lisp绘制电缆槽系统中的T连接。
我需要问用户如下
输入T连接类型半径/倒角?
如果选择半径
输入半径大小:
如果选择倒角
输入倒角长度:
输入宽度作为“展位半径”
输入T连接宽度:
欲了解更多信息,请参阅随附的样本。dwg文件。
感谢您的帮助
谢谢大家
M巴德兰
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:11:15 | 显示全部楼层
这是我的程序,我有时使用,但它不是免费软件。
这是我第二次无法上传。这就是为什么我把视频上传到以下网站。
 
http://gph.is/2vkNPoK
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:15:15 | 显示全部楼层
为什么不创建两个动态块?无需代码。
 
如果你想要一个Lisp程序的答案,它是一个非常简单的形状,只需使用“极坐标”来计算点。我会使用DCL作为输入,用一个按钮来处理半径或倒角问题。
170740j5ki583egdidyddi.png
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:17:59 | 显示全部楼层
 
嗨,比格尔,
 
我渴望看到这是多么简单!你为这个任务写过代码吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:21:52 | 显示全部楼层
我现在有点忙,空闲时间有限,但会尽量找些时间。我会先做动态块,因为这是我不经常做的事情。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:24:09 | 显示全部楼层
 
我不认为动态块在这种情况下会有帮助,只要输入值是不同的,更麻烦的是有两个弯曲角度的发球。
 
我确实问过你关于代码的问题,你说写起来很简单。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:29:46 | 显示全部楼层
请注意,我使用示例dwg作为我的指南,因为我不做电缆桥架。这是第三步。我很感激我可能使用了错误的起点,但这是可以解决的。也可以添加与托盘相同的角度。
 
我将最后做前端dcl。
 
  1. ; by Alan H Aug 2017
  2. ; very simple cable routine only uses 1 width but dialog has two so code can be changed easily
  3. (defun cabtrayinput ( / )
  4. (setq dcl_id (load_dialog  "C:\\acadtemp\\cabtray.dcl")) ; change directory to user directory
  5. (if (not (new_dialog "ddcabtray" dcl_id))
  6. (exit))
  7. (mode_tile "key1" 3)
  8. (set_tile "key1" (setq val1 "200"))
  9. (action_tile "key1" "(setq val1 $value)")
  10. (mode_tile "key2" 3)
  11. (set_tile "key2" (setq val2 "200"))
  12. (action_tile "key2" "(setq val2 $value)")
  13. (mode_tile "key3" 3)
  14. (set_tile "key3" (setq val3 "75"))
  15. (action_tile "key3" "(setq val3 $value)")
  16. (start_dialog)
  17. (done_dialog)
  18. (unload_dialog dcl_id)
  19. )
  20. (defun c:ctray ( / pt1 pt2 pt3 pt4 pt5 pt6 w rad oldsnap oldang)
  21. (setq oldsnap (getvar "osmode"))
  22. (setq oldang (getvar "angdir"))
  23. (setvar "angdir" 0)
  24. (setq pt1 (getpoint "\nPick lower left corner "))
  25. (setq oldsnap (getvar "osmode"))
  26. (setvar "osmode" 0)
  27. (cabtrayinput)
  28. (setq w (Atof val1))
  29. (setq w2 (Atof val2))
  30. (setq rad (Atof val3))
  31. (setq pt2 (polar pt1 0.0 (+ (* 2.0 rad) w)))
  32. (setq pt3 (polar pt2 (/ pi 2.0) w))
  33. (setq pt4 (polar pt3  (/ pi 2.0) rad))
  34. (setq pt5 (polar pt4 pi (+ w rad)))
  35. (setq pt6 (polar pt5 pi rad))
  36. (command "pLINE"  pt1 "w" 0.0 0.0 pt2 pt3 "arc" pt3 "Ce" pt4 "angle" -90 "L" pt5 "arc" pt5 "Ce" pt6 "angle" -90 "L" "Close" )
  37. (command "-hatch" "S" "last" "" "P" "HEX" 15 0 "")
  38. (setvar "osmode" oldsnap)
  39. (setvar "angdir" oldang)
  40. (princ)
  41. )
  42. (defun c:chtray ( / pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 w cham oldsnap oldang)
  43. (setq pt1 (getpoint "Pick lower left corner "))
  44. (setq oldsnap (getvar "osmode"))
  45. (setq oldang (getvar "angdir"))
  46. (setvar "angdir" 0)
  47. (setvar "osmode" 0)
  48. (cabtrayinput)
  49. (setq w (Atof val1))
  50. (setq w2 (Atof val2))
  51. (setq cham (Atof val3))
  52. (setq pt2 (polar pt1 (/ pi 2.0) w))
  53. (setq pt3 (polar pt2 0.0 cham))
  54. (setq pt4 (polar pt3  (/ pi 4.0) 150.0 ))
  55. (setq pt5 (polar pt4 (/ pi 2.0) cham))
  56. (setq pt6 (polar pt5 0.0 w))
  57. (setq pt7 (polar pt6 (* pi 1.5) cham))
  58. (setq pt8 (polar pt7 (* pi 1.75) 150.0))
  59. (setq pt9 (polar pt8 0.0 cham))
  60. (setq pt10 (polar pt9  (* pi 1.5) w))
  61. (command "PLINE"  pt1 "w" 0.0 0.0 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 "Close")
  62. (command "-hatch" "S" "last" "" "P" "HEX" 15 0 "")
  63. (setvar "osmode" oldsnap)
  64. (setvar "angdir" oldang)
  65. (princ)
  66. )

将此另存为cabtray。dcl并将代码编辑到保存位置。
  1. ddcabtray : dialog {
  2. : column {
  3. : edit_box {
  4.    key = "key1";
  5. label = "Enter tray width 1";
  6.     edit_width = 5;
  7.     edit_limit = 4;
  8.   is_enabled = true ;
  9.    }
  10. spacer_1 ;
  11. : edit_box {
  12.    key = "key2";
  13. label = "Enter tray width 2 ";
  14.     edit_width = 5;
  15.     edit_limit = 4;
  16.   is_enabled = true ;
  17.    }
  18. spacer_1 ;
  19. : edit_box {
  20.    key = "key3";
  21. label = "Offset - Radius";
  22.     edit_width = 5;
  23.     edit_limit = 4;
  24.   is_enabled = true ;
  25.    }
  26.    }
  27. spacer_1 ;
  28. ok_only;}
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:30:04 | 显示全部楼层
Tharwat看看上面的代码,请注意它是为新手编写的,因此所有变量作为点都可以减少到使用3 pt变量。这是下一步。
 
最重要的是,它将原始帖子与所需的有限变量选项相匹配。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:33:51 | 显示全部楼层
Good one BIGAL及其建议将变量本地化,并添加错误处理功能,以避免错误消息,并在发生任何错误时重置系统变量。
 
我不认为这个程序需要一个对话框,否则你需要检查这些值,如果它们是数字和无钉值,然后再处理程序的下一步。
 
我不知道你为什么把这两个设计分成两个程序!。
 
你看过我在第一篇帖子中上传的视频吗?
 
有一个愉快的周末。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:39:14 | 显示全部楼层
谢谢塔瓦。我确实看过这段视频,毫无疑问,这是一套更大的工具中的一部分。很难找到商业解决方案。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 20:20 , Processed in 0.552409 second(s), 85 queries .

© 2020-2025 乐筑天下

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