nick777 发表于 2022-7-6 06:55:49

将此代码更改为以C语言运行

我从某人那里偷了这个代码并修改了它。它可能效率极低,但我几乎不知道自己在做什么。不管怎样,它所做的是将块库中的一组块插入到图形中。我肯定有人有一个10行代码,我很乐意偷。
 
我希望能够更改它,以便可以将其作为命令与脚本一起运行,因为我有一些其他代码块,我正在与脚本一起运行,我想添加这个代码块。我如何修改这个?
 

(defun open_dbx (dwg / dbx)
(if (< (atoi (substr (getvar "ACADVER") 1 2)) 16)
(setq dbx (vlax-create-object "ObjectDBX.AxDbDocument"))
(setq dbx (vlax-create-object
(strcat "ObjectDBX.AxDbDocument."
(substr (getvar "ACADVER") 1 2)))))
(vla-open dbx dwg)
dbx
)
;Get "Valve" in 'ValveBlock_TapCard.dwg" file :
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/ValveBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "Valve")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/ManholeBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "Manhole")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/BuildingBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "Building")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/CurbValveBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "CurbValve")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/GateValveBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "GateValve")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/HydrantBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "Hydrant")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/MeterPitBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "MeterPit")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/NArrowBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "NorthArrow")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/PoleBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "Pole")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/StreetNameBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "StreetName")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/TapCardNumberBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "TapCardNumber")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/WallBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "Wall")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up
;Next block import
(setq Dbx (open_dbx "I:/Water_CAD_Details/TAP_BlockLibrary/WaterMainBlock_TapCard.dwg")) ; file name containing block
(vla-CopyObjects
Dbx
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list (vla-item (vla-get-blocks dbx) "WaterMain")))
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))))
(vlax-release-object dbx) ;Clean-up

BIGAL 发表于 2022-7-6 07:17:14

我们不会偷我们借的代码!
 
我不会按照代码中的方式来做,而只是有一个块列表或一个文本文件和一个defun来做插入部分,就像你说的10行一样,如果你想做一个脚本,只需写下1行必要的命令步骤,并复制和更改块名另存为脚本。

nick777 发表于 2022-7-6 07:28:30

我不知道如何使用脚本来运行这个。我有一个运行另一个lisp的,它有一个命令“tapconvert”我如何获得一个命令,这样我就可以预加载这个脚本,然后用一个脚本运行它很多次?我尝试在open\u dbx之前添加C:。我想更改它,以便可以将其作为脚本运行,但我不知道如何更改它或让脚本打开并运行它。

nick777 发表于 2022-7-6 07:38:22

 
我只是把这一切添加到另一个lisp中。我不知道如何让它在脚本中运行,但那会,因为C:可以工作。不幸的是,我不知道如何做你提到的列表,但理论上听起来不错

BIGAL 发表于 2022-7-6 07:53:13

脚本示例just type script
 
打开dwg1 z e插入块1 0,0 1 0插入块2 0,0 1 1 0插入块3 z e关闭y
打开dwg2 z e插入块1 0,0 1 0插入块2 0,0 1 1 0插入块3 z e关闭y
等等

nick777 发表于 2022-7-6 08:01:37

 
我使用AutoScript是因为它可以让你选择充满文件的文件夹,我可以在12000多个文件夹上运行它。所以我希望脚本应用于所有这些文件,由AScript处理,然后运行一些。lsp的。我可以预加载那些用命令运行的,但是如果它没有C:要设置一些东西作为命令运行,我不知道如何让脚本运行它。似乎任何地方都没有关于脚本的文档。。。我有ACAD圣经和互联网,但真的看不到太多。我知道这很简单,但就是不知道语法。
页: [1]
查看完整版本: 将此代码更改为以C语言运行