djanev 发表于 2022-7-6 07:04:33

设计零件的最佳方法

你好
 
我在这个留言板上读到了一些关于将尺寸从excel导入Auto CAD并使用这些尺寸绘制零件的帖子。我知道有几种方法可以完成这项任务,如Auto lisp、Auto CAD脚本或宏。
 
我们的零件是激光切割的金属板。
我们在图纸上使用了两层。一层用于切割层,即第0层,另一层称为划线,用于激光蚀刻零件上的信息,如零件编号、折弯线和制造厂的布线。我们也有激光蚀刻的几何形状,以显示焊接位置的标记。
 
我附上了一个例子,我们的部分,其中包括几何上的切割和划线蚀刻层。任何帮助都将不胜感激。
 
零件示例。dwg我们零件的示例。

BIGAL 发表于 2022-7-6 07:11:38

我看了一眼,很简单
 
eg excel
边界偏移1偏移2 L W
RND孔偏移1偏移2 R
RND孔偏移1偏移2 R
RND孔偏移1偏移2 R
插槽偏移1偏移2 L W
插槽偏移1偏移2 L W
插槽偏移1偏移2 L W
插槽偏移1偏移2 L W
 
有很多免费的excel到autocad的东西谷歌“Getexel.lsp”你需要做一些家庭工作,虽然你需要一开始3 lisp defuns(一个更大的一个小程序)插槽,边框,孔,当你读xecel一行一行,它运行一个小defuns和绘制对象相当容易到目前为止。
 
现在,你的excel是如何创建的,里面有很多“解决问题”吗?如果不是,为什么不使用lisp通过创建更多的小defuns来解决所有问题呢。
 
我建议下一步是发布一份excel的副本,或者解释一下它的功能和外观,甚至是图片都可以。

Bill Tillman 发表于 2022-7-6 07:15:19

我一直在做这种类型的编程。就我而言,至少我发现GetExcel非常有用,但速度相当慢。因此,我在Excel文件中选择了一些vba代码,创建了一个包含所需信息和维度的简单文本文件。然后,可以使用相同的vba代码启动AutoCAD并运行LISP程序,该程序将读取文本文件并准备图形。

djanev 发表于 2022-7-6 07:20:29

excel文件将具有长度尺寸、高度尺寸以及剪切位置的wx和wy尺寸。excel文件还将包含一些文字,用于将作业和零件号放置在蚀刻层上。
 
 

ReMark 发表于 2022-7-6 07:28:49

听起来像是一个乞求指导的话题。

djanev 发表于 2022-7-6 07:29:48

辅导将是一种生活享受。哈哈。谢谢你的帖子,现在我有一些方向了。

fixo 发表于 2022-7-6 07:38:29

上载Excel文件
干杯

BIGAL 发表于 2022-7-6 07:42:47

嗨,比尔,很多人不知道excel中的VBA,而不是写一个txt文件,也许写一个脚本,然后不需要lisp。如果txt文件来自其他文件,lisp仍然很方便。

irneb 发表于 2022-7-6 07:46:27

Ecxel 2007+中的VBA并不总是可用的-与ACad类似,您需要单独安装它。你可能是指使用VB的VSTA吗。净/碳#?还是说AutoLisp中的ActiveX?

irneb 发表于 2022-7-6 07:50:29

接受挑战
我正在通过“最简单”的方式来实现这一点,即CSV。将XLS文件另存为CSV(逗号分隔文件)。现在在Lisp中,将CSV文件转换为值列表相当简单:
;;; Replace all instances of a string part in a source string with a new string part
(defun str-subst-all(new old source / pos)
(setq pos 0)
(while (setq pos (vl-string-search old source pos))
   (setq source (vl-string-subst new old source pos)
         pos    (+ pos (strlen new))))
source)

;;; Convert a delimeted string into a list of strings / numbers
(defun Delim->Lst(source delim)
(mapcar '(lambda (str)
            (if (wcmatch str "*[~0-9.`-]*")
            str
            (read str)))
         (read (strcat "(\"" (str-subst-all "\" \"" "," source) "\")"))))

;;; Read a delimeted text file into a list of sublists of strings
(defun Read-Delim->Lst(filename delim / file line result)
(if (setq file (open filename "r")) ;Open file for reading
   (progn (while (setq line (read-line file)) ;Read each line from file
            (setq result (cons (Delim->Lst line delim) result))) ;Add converted list into result
          (close file))) ;Close the file
(reverse result))此外,您还需要某种方法来确保层存在,并且不会冻结或锁定:
现在,对于实际绘制截面图的主要部分,我假设一些尺寸为常数。如果不正确,则需要在XLS内指定,否则只需根据需要在此定义中进行调整。
注意*Draw:Offset*全局变量?我用它在上一张纸的右边画100个单位的连续纸,这样它们就不会直接画在一起。
 
第一部分[(setq…]就是我设置假设值的地方,初始化*Draw:Offset*以X=0.0开始,并确保剪切层和蚀刻层可用于编辑。
 
板材部分的制作轮廓从数据中绘制矩形多段线,板材中的制作孔也类似,但对于放置在WX/WY位置的孔,使用假定的孔宽和孔高尺寸。然后,我在工作表的左下角创建了一个dtext,您不需要指定需要它的位置,因此我使用假设的文本高度和当前的文本样式假设了最简单的位置。最后一行将*Draw:Offset*全局变量设置为下一张图纸的开始位置-准备好下一次调用此函数。
 
现在,将所有这些合并到一个命令中:
在这里,我检查文件是否由用户选择。该对话框默认为与DWG相同的文件夹。如果选择了文件,我会检查是否可以从文件中读取数据。
 
我清除全局变量,使其从0,0,0开始。然后我依次遍历每一行,省略第一行(即标题)。对于每一行,我都将数据发送到DrawCutSheet函数。
 
附件是LSP,包括所有这些defuns以及我创建的测试CSV。如果您的XLS格式不同,您需要对此进行说明。
设计零件。LSP
设计零件。csv
页: [1] 2
查看完整版本: 设计零件的最佳方法