mostafa badran 发表于 2022-7-5 16:07:38

绘制电缆槽T连接

大家好
我需要帮助创建lisp绘制电缆槽系统中的T连接。
我需要问用户如下
输入T连接类型半径/倒角?
如果选择半径
输入半径大小:
如果选择倒角
输入倒角长度:
输入宽度作为“展位半径”
输入T连接宽度:
欲了解更多信息,请参阅随附的样本。dwg文件。
感谢您的帮助
谢谢大家
M巴德兰

Tharwat 发表于 2022-7-5 16:11:15

这是我的程序,我有时使用,但它不是免费软件。
这是我第二次无法上传。这就是为什么我把视频上传到以下网站。
 
http://gph.is/2vkNPoK

BIGAL 发表于 2022-7-5 16:15:15

为什么不创建两个动态块?无需代码。
 
如果你想要一个Lisp程序的答案,它是一个非常简单的形状,只需使用“极坐标”来计算点。我会使用DCL作为输入,用一个按钮来处理半径或倒角问题。

Tharwat 发表于 2022-7-5 16:17:59

 
嗨,比格尔,
 
我渴望看到这是多么简单!你为这个任务写过代码吗?

BIGAL 发表于 2022-7-5 16:21:52

我现在有点忙,空闲时间有限,但会尽量找些时间。我会先做动态块,因为这是我不经常做的事情。

Tharwat 发表于 2022-7-5 16:24:09

 
我不认为动态块在这种情况下会有帮助,只要输入值是不同的,更麻烦的是有两个弯曲角度的发球。
 
我确实问过你关于代码的问题,你说写起来很简单。

BIGAL 发表于 2022-7-5 16:29:46

请注意,我使用示例dwg作为我的指南,因为我不做电缆桥架。这是第三步。我很感激我可能使用了错误的起点,但这是可以解决的。也可以添加与托盘相同的角度。
 
我将最后做前端dcl。
 
; by Alan H Aug 2017
; very simple cable routine only uses 1 width but dialog has two so code can be changed easily

(defun cabtrayinput ( / )
(setq dcl_id (load_dialog"C:\\acadtemp\\cabtray.dcl")) ; change directory to user directory
(if (not (new_dialog "ddcabtray" dcl_id))
(exit))
(mode_tile "key1" 3)
(set_tile "key1" (setq val1 "200"))
(action_tile "key1" "(setq val1 $value)")
(mode_tile "key2" 3)
(set_tile "key2" (setq val2 "200"))
(action_tile "key2" "(setq val2 $value)")
(mode_tile "key3" 3)
(set_tile "key3" (setq val3 "75"))
(action_tile "key3" "(setq val3 $value)")
(start_dialog)
(done_dialog)
(unload_dialog dcl_id)
)

(defun c:ctray ( / pt1 pt2 pt3 pt4 pt5 pt6 w rad oldsnap oldang)
(setq oldsnap (getvar "osmode"))
(setq oldang (getvar "angdir"))
(setvar "angdir" 0)
(setq pt1 (getpoint "\nPick lower left corner "))
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(cabtrayinput)
(setq w (Atof val1))
(setq w2 (Atof val2))
(setq rad (Atof val3))
(setq pt2 (polar pt1 0.0 (+ (* 2.0 rad) w)))
(setq pt3 (polar pt2 (/ pi 2.0) w))
(setq pt4 (polar pt3(/ pi 2.0) rad))
(setq pt5 (polar pt4 pi (+ w rad)))
(setq pt6 (polar pt5 pi rad))
(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" )
(command "-hatch" "S" "last" "" "P" "HEX" 15 0 "")
(setvar "osmode" oldsnap)
(setvar "angdir" oldang)
(princ)
)

(defun c:chtray ( / pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 w cham oldsnap oldang)
(setq pt1 (getpoint "Pick lower left corner "))
(setq oldsnap (getvar "osmode"))
(setq oldang (getvar "angdir"))
(setvar "angdir" 0)
(setvar "osmode" 0)
(cabtrayinput)
(setq w (Atof val1))
(setq w2 (Atof val2))
(setq cham (Atof val3))
(setq pt2 (polar pt1 (/ pi 2.0) w))
(setq pt3 (polar pt2 0.0 cham))
(setq pt4 (polar pt3(/ pi 4.0) 150.0 ))
(setq pt5 (polar pt4 (/ pi 2.0) cham))
(setq pt6 (polar pt5 0.0 w))
(setq pt7 (polar pt6 (* pi 1.5) cham))
(setq pt8 (polar pt7 (* pi 1.75) 150.0))
(setq pt9 (polar pt8 0.0 cham))
(setq pt10 (polar pt9(* pi 1.5) w))
(command "PLINE"pt1 "w" 0.0 0.0 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 "Close")
(command "-hatch" "S" "last" "" "P" "HEX" 15 0 "")
(setvar "osmode" oldsnap)
(setvar "angdir" oldang)
(princ)
)

将此另存为cabtray。dcl并将代码编辑到保存位置。

ddcabtray : dialog {
: column {
: edit_box {
   key = "key1";
label = "Enter tray width 1";
    edit_width = 5;
    edit_limit = 4;
is_enabled = true ;
   }
spacer_1 ;
: edit_box {
   key = "key2";
label = "Enter tray width 2 ";
    edit_width = 5;
    edit_limit = 4;
is_enabled = true ;
   }
spacer_1 ;
: edit_box {
   key = "key3";
label = "Offset - Radius";
    edit_width = 5;
    edit_limit = 4;
is_enabled = true ;
   }
   }
spacer_1 ;
ok_only;}

BIGAL 发表于 2022-7-5 16:30:04

Tharwat看看上面的代码,请注意它是为新手编写的,因此所有变量作为点都可以减少到使用3 pt变量。这是下一步。
 
最重要的是,它将原始帖子与所需的有限变量选项相匹配。

Tharwat 发表于 2022-7-5 16:33:51

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

BIGAL 发表于 2022-7-5 16:39:14

谢谢塔瓦。我确实看过这段视频,毫无疑问,这是一套更大的工具中的一部分。很难找到商业解决方案。
页: [1] 2
查看完整版本: 绘制电缆槽T连接