CadFrank 发表于 2022-7-6 08:26:10

制作w形光束的例行程序

嗨,我在这里有一个惯例,我不能使它正常工作,我不明白为什么。
 
当我一步一步地做的时候,它运行得很好,但我像程序一样运行它,它给了我一个变形的梁。
 
这里是代码:
 
(defun c:test (/ O L H EA ES R)

(setq O (getpoint "\nSelecte the point of origine : "))
(setq H (getreal "\nGive the depth of the beam 'd' : "))
(setq L (getreal "\nGive the width of the flange 'b' : "))
(setq EA (getreal "\nGive the web thickness 'w' : "))
(setq ES (getreal "\nGive the flange thickness 't' : "))

(setq pt1 (polar O pi (/ L 2)))
(setq pt2 (polar pt1 (/ pi 2)ES))
(setq pt3 (polar pt2 0 (/(- L EA) 2)))
(setq pt4 (list (car pt3)(+ (cadr O) (- H ES))))
(setq pt5 (list (car pt1)(cadr pt4)))
(setq pt6 (list (car pt1) (+ (cadr pt5) ES)))
(setq pt7 (polar pt6 0 L))
(setq pt8 (list(car pt7) (cadr pt5)))
(setq pt9 (list(+ (car pt4) EA) (cadr pt8)))
(setq pt10 (list (car pt9) (cadr pt3)))
(setq pt11 (list (car pt8) (cadr pt10)))
(setq pt12 (list (car pt11) (cadr pt1)))

(command "_.pline" O pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 O "")
(command "_.fillet" "_r" R)
(command "_.fillet" pt3 pt4 pt4 pt5 pt9 pt10 pt10 pt11 "")

(princ)

);defun c:
 
就是这样。
提前感谢您的帮助
 
干杯和啤酒

Lee Mac 发表于 2022-7-6 08:39:13

由于您使用的是命令调用,因此OSnap可能会影响点的放置。
 
在点输入前加上“_non”以忽略OSnap,即。
 
(command "_.pline" "_non" O "_non" pt1 ... )
 
或者,保持命令表达式不变,并在关闭OSMODE之前存储其值,然后在代码末尾重置它,即:
 

(setq osmode (getvar 'OSMODE))
(setvar 'OSMODE 0)

(command ... )

(setvar 'OSMODE osmode)

CadFrank 发表于 2022-7-6 08:44:49

正确!!!
 
现在我只需要给一些角点一个半径。
 
这是一张照片:
 

 
我已经圈出了我想要输入半径的角。
 
半径是代码开头的变量R
 
但既然我不知道怎么才能做到。
 
我知道我可以用线做一个“圆角”,但由于“pline”只在实体上,而不是几个实体上,我不知道如何继续。
 
如果你不介意的话,我需要一个打击来帮助我。
 
感谢
 
干杯,啤酒!

LibertyOne 发表于 2022-7-6 08:50:36

法兰的内表面是否垂直?或者它们是倾斜的?我也在编写自己的钢结构程序,但在开始绘制截面之前,我会先将所有数据格式化。

rameshaxis 发表于 2022-7-6 08:56:51

Hai Cadfrank,
 
为I梁尝试此代码
 
 
(定义c:IBM(/O L H EA ES R)
 
(setq O(getpoint“\n选择原点:”)
(setq H(getreal“\n移动梁的深度‘d’:”)
(setq L(getreal“\n移动法兰“b”的宽度:”)
(setq EA(getreal“\n将腹板厚度“w”:”)
(setq ES(getreal“\n获取法兰厚度‘t’:”)
 
(setq pt1(极性O pi(/L 2)))
(setq pt2(极性pt1(/π2)ES))
(setq pt3(极性pt2 0(/(-L EA)2)))
(setq pt4(列表(car pt3)(+(cadr O)(-H ES)))
(setq pt5(列表(car pt1)(cadr pt4)))
(setq pt6(列表(car pt1)(+(cadr pt5)ES)))
(setq pt7(极性pt6 0 L))
(setq pt8(列表(car pt7)(cadr pt5)))
(setq pt9(列表(+(car pt4)EA)(cadr pt8)))
(setq pt10(列表(car pt9)(cadr pt3)))
(setq pt11(列表(car pt8)(cadr pt10)))
(setq pt12(列表(car pt11)(cadr pt1)))
 
 
(命令“_.pline”O pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 O”)
(命令“.fillet”“\u r”r)
(命令“_.fillet”pt2 pt3”)
(命令“_.fillet”pt3 pt4”)
(命令“_.fillet”pt4 pt5”)
(命令“_.fillet”pt5 pt6”)
(命令“_.fillet”pt8 pt9”)
(命令“_.fillet”pt9 pt10”)
(命令“_.fillet”pt10 pt11”)
(命令“_.fillet”pt11 pt12”)
(普林斯)
 
);德芬c:

CadFrank 发表于 2022-7-6 09:04:36

 
嘿,谢谢你给我的小费,我想怎样就怎样。
 
很抱歉,我们工作时上网有问题。
 
干杯和啤酒

BIGAL 发表于 2022-7-6 09:09:12

有很多钢梁的东西都准备好了,已经写好了,如果你想自己做,但是一旦你得到了代码,你做一个查找列表,不输入任何尺寸,而是选择正确的梁来绘制,例如200UB,它有一个数据线连接200 100 8 6这是大小变量。唯一的问题是选择点。您可以使用DCl或此处未提及的侧栏菜单来选择梁类型。有一个包含所有参数的TXT文件,因此易于添加更多参数,而不是在lsp中硬编码等。
 
同样的方法也适用于所有类型的预定义形状UB UC PFB TFB SQhol C Z等
 
从lisp中剪切出来读取txt文件的示例

(setq beamtype (getstring "\enter beam type"))
(setq fo (open "beamlist" "r"))

(while (setq new_line (read-line fo))
(setq x 1)
(setq y 7)
(beam_name)
(setq beam ans )
(setq x
(setq y 10)
(setq d ans)
)
(defun beam_name ()
   (setq ans "")
   (setq char_found "")
   (while (/= x y)
   (setq char_found (substr new_line x 1))
   (setq x (+ x 1))
;      (if (= char_found (chr 92))
   (if (= char_found " ")
       (setq x y)
       (setq ans (strcat ans char_found))
   )
   )
)

open file get 1st line see if beamtype if yes then read variables else read next till end of file
Then your code

Bill Tillman 发表于 2022-7-6 09:13:12

我支持比格尔所说的。有一些非常容易使用,铁锹准备钢详细LISP例程在那里是免费的。STL。lsp,DDSTL。lsp,钢。对于初学者来说,lsp和所有这些都可以在Cadalyst上免费获得。通用域名格式。如果你有兴趣了解它是如何工作的,那么我们当然鼓励你继续你的项目,但是如果你想详细描述钢型材,即使是在3D中,看看这些,你会对已经完成的工作感到惊讶。

CadFrank 发表于 2022-7-6 09:25:53

你好
 
谢谢你的提示,我确实找了一些。lsp适用于钢,仅适用于STL。lsp,但似乎无法使其正常工作。
 
但既然我想学LISP,我宁愿从自己动手开始。
 
也许将来我会尝试其他Lisp程序的语言。
 
干杯,啤酒!

ReMark 发表于 2022-7-6 09:26:27

为什么不使用动态块?结构钢梁(W形)的基础已包含在AutoCAD 2010的工具选项板中,以英制和公制单位显示。
页: [1]
查看完整版本: 制作w形光束的例行程序