Excel到Autocad帮助我
我是否可以使用Autolisp与Excel中的给定名称协调进行导入,并在Autocad中生成一个块,分别用名称标识并放置在坐标处?谢谢你的帮助。 从你请求的声音中。。。对尽管你必须对你要做的事情有更多的描述。 在excel中,我有一个列表,一列中有一个名称,另两列中有x和y坐标。我的Autocad 2007是最基本的。在我的办公室,这个版本将在2010年被取代。我想要的是一个lisp例程,它将从excel文件中读取数据,并将每个点的autocad位置坐标放置在给定的块中,其名称(与excel第一列中的名称相同)位于图形中块的上方或下方。
看看它将如何工作:
(vl负载com);;本地defun(defun read\u excel\u range(FilePath ShtNum Address/ExcelApp ExcData Sht UsdRange Wbk)(setq ExcelApp(vlax get or create object“excel.Application”)(vla put visible ExcelApp:vlax true)(vlax put property ExcelApp“DisplayAlerts:vlax true)(setq Wbk(vl catch all apply”vla open(list(vlax get property ExcelApp“WorkBooks”)FilePath))(setq Sht(vl catch all apply“vlax get property(list(vlax get property Wbk“Sheets”)“Item”ShtNum))(vlax invoke method Sht“Activate”)(setq UsdRange(vlax get property(vlax get property Sht“Cells)”Range“Address)ExcData(vlax safearray->list(vlax variant value(vlax get property UsdRange”Value2))(setq ExcData(函数(lambda(x)(mapcar‘vlax variant value x)))ExcData(setq ExcData(vl remove if(function(lambda(x)(member nil x)))ExcData(vl catch all apply‘vlax invoke method(list Wbk“Close”))(vl catch all apply‘vlax invoke method(list ExcelApp“Quit”))(mapcar(function(lambda(x)(vl catch all apply(function(lambda())(progn(if(not(vlax-object-released-p x))(progn(vlax release object x)(setq x nil)))(list UsdRange Sht Wbk ExcelApp))(gc)(gc)(gc)ExcData);;主程序(defun C:XB(/acsp address data\u list fname sheetnum)(setq fname(getfield“Select Excel File:”(getvar“dwgprefix”)“XLS”4)sheetnum“Sheet1”address“A:C”)(setq data\u list(read\u Excel\u range fname sheetnum address));;从列表中删除标题(setq data_list(vl remove if(function(lambda)(not(numberp(cadr a)Ю)Ю)data_list))(if data_list(progn(setq acsp(vla get block(vla get activelayout)(vla get activedocument(vlax get acad object)Ю)))(foreach item data_list(vlax invoke method acsp’InsertBlock(vlax-3d-point(list(cadr item)(caddr item)0))(car item)1 1 1 0)))(princ))(提示“\n\t\t>>\t键入XB从Excel插入块\t
修正:
不知道为什么,但是这个xb。如果块已在dwg中,则lsp仅适用于在Excel文件中列出的坐标处插入块。
不知道为什么xb。lsp最初没有找到acad路径中的块。
S 它打开excel,但不执行任何操作。我不知道我是否必须在Excel中创建一个由3列组成的范围,以及是否必须为工作表命名。另一方面,我不知道是否必须在autocad中创建块,以及应该给这个块取什么名称。
谢谢你的快速回复,因为我真的需要这个程序。
顺致敬意, 它打开excel,但不执行任何操作。我不知道我是否必须在Excel中创建一个由3列组成的范围,以及是否必须为工作表命名。另一方面,我不知道是否必须在autocad中创建块,以及应该给这个块取什么名称。
谢谢你的快速回复,因为我真的需要这个程序。
顺致敬意,
你好
这个Lisp程序从2005年到2009年为我工作了很多年
拜维奇有很多可能的原因,这对你来说不起作用
在此处上传示例图纸,并附上解释,以便更好地理解您的问题
~'J'~ 我给你发了一张图纸,上面有一个叫做PA的块(里面有一个三角形的圆)。同时向您发送包含坐标的xls文件。我需要的是例程读取excel文件的所有行,并将设计放在每个块坐标中,PA以每个块的名称写下,作为dwg,显示在xls文件第三行的样本点中。
注意:出现的错误消息是:
; 错误:错误的参数类型:VLA-OBJECT#
请原谅我的英语不好
当做
测验拉链
我现在帮不了你,这里有我自己的工作
我一会回来
~'J'~
页:
[1]
2