Gu_xl 发表于 2011-2-12 17:29:17

【Gu_xl】原创实用工具:Block 自动转为Lisp源代码

本帖最后由 Gu_xl 于 2021-9-23 10:36 编辑

程序下载 :

我们在编写AutoCAD应用程序时,经常会使用到符号库,在程序分发时必须将符号库随程序一起分发,一般符号库的图形很多,拷贝分发不是很方便,而且符号库都暴露在任何人面前。为了避免这种情况,将符号在程序中用代码生成是一种很好的办法,但是这么多符号,一句一句用代码来写,好像不太现实!
好了,我这提供一个程序,能够自动将符号转成源代码,成百上千个符号,转瞬间即可全部转为lisp源代码,实现符号库的封装!
请下载附件,加载“图块代码生成器.VLX”调用命令:BlockToLisp.
使用方法:
1、假设符号库文件存放在“c:\符号库\”目录下,新建图形,加载图块代码生成器.VLX,键入命令:blockin,选择“c:\符号库\”目录,将符号库内DWG文件以块全部插入该图形。
2、键入命令:blocktolisp,将刚才插入的图块全部自动生成MakeBlock.Lsp程序文件源码.
3、将MakeBlock.Lsp打包到你的程序文件中,每次插入符号前调用(gxl-Blk-Check 图块名)函数,该函数自动创建图块并返回图块名,如果创建不成功,也返回图块名,即可实现图块的自动定义,如符号库中有符号名为:路灯.dwg文件,则程序自动生成的图块定义函数名为:MakeBlock-路灯 ,块名为:“路灯”,使用如下方法,即可实现图块“路灯”的自动创建和插入:

(command "_insert" (gxl-Blk-Check"路灯") (getpoint "\n图块插入点:") 1 1 0)
gxl-Blk-Check函数代码:
(defun gxl-Blk-Check (B_Name / curlay B_Name1 gxl-Str-Subst)
(defun gxl-Str-Subst (new-str pattern string / s)
    (while (/= string
         (setq s (vl-string-subst new-str pattern string))
   )
      (setq string s)
    )
    string
)
;;替换块名称中括号
(setq B_Name1 (gxl-Str-Subst "]" ")" (gxl-Str-Subst "[" "(" B_Name)))
(setq curlay (getvar "Clayer"))
(if (not (TBLSEARCH "block" B_Name))
    (progn
      (if
(or (= 'USUBR
         (type (eval (read (strcat "MakeBlock-" B_Name1))))
      )
      (= 'SUBR (type (eval (read (strcat "MakeBlock-" B_Name1)))))
)
   (eval (read (strcat "(MakeBlock-" B_Name1 ")")))
      )
    )
)
(setvar "clayer" curlay)
B_Name
)





CAD新军 发表于 2021-4-21 16:46:19

版主能不能提供一个 (foo blockname) --> 返回文件句柄或者路径而不是打开文件的接口。我现在想做一个带块预览的GUI的导入同名块工具。核心是你另外一个贴中的用objectdbx导入同名块函数。刚刚翻这个帖子的时候意识到,要是这个生成的文本是稳定的话(主要是顺序稳定),那文本相同块定义就可以认为没有变化,可是这个vlx封装成了生成txt打开了,无法直接使用,如果能提供一个输入块名生成临时文件并返回临时文件路径,这样后续就可以读取文件比较两个块定义了

kozmosovia 发表于 2024-4-26 23:09:30

stonedesign 发表于 2022-9-10 09:48
是的   希望版主更修改下支持动态块就好了,完美

想用代码自动做动态块就可以洗洗睡了。
最好的支持一切的方式是块WBLOCK成DWG再转换成文本格式的TXT作为资源文件打包到VLX中。执行时读取资源文件转TXT为DWG再插入。

stonedesign 发表于 2022-9-10 09:48:09

MUSIC-DIE 发表于 2021-12-16 15:49
对属性块也可以使用,但是动态块就不行了,我试着做了一个拉伸的动态块    生成代码,代码不能生成动态块 ...

是的   希望版主更修改下支持动态块就好了,完美

自贡黄明儒 发表于 2011-2-12 18:27:21

本帖最后由 自贡黄明儒 于 2011-2-12 21:59 编辑

版主太有才了!!!我来先尝尝。谢谢啦!!!!

pop159 发表于 2011-2-12 21:44:21

版主太有才了!!!

pop159 发表于 2011-2-12 21:47:27

xiaxiang 发表于 2011-2-12 22:46:04

我也来尝鲜啦

gzbccy 发表于 2011-2-13 11:56:36

太有才了,太给力了。

461045462 发表于 2011-2-13 12:36:04

谢谢版主的分享。

cmbcmbcjh 发表于 2011-2-13 15:47:48

下载不了

1078815748 发表于 2011-2-14 12:01:20

给钱了,又下载不了

zhulei 发表于 2011-2-14 13:31:50

版主厉害。这样。我们的图块就不会轻易被借用了。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【Gu_xl】原创实用工具:Block 自动转为Lisp源代码