明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: wzg356

[资源] 图块打包生成lsp程序 ss2lsp

[复制链接]
发表于 2025-6-18 01:05:54 | 显示全部楼层
KO你 发表于 2025-6-18 01:03
思路是对的。怎么实践,云大师不妨操作一下看看能否实现。
我是完全不懂怎么折腾了

我就是想用这个思路打包一些常用的图块(包含动态块做成插件),以后经过命令插入进来,懒得再去找图库。这个问题困扰我很久了
回复 支持 反对

使用道具 举报

发表于 2025-8-27 22:39:11 | 显示全部楼层
请问是先加载那个FAS文件吗?
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
KO你 发表于 2025-6-15 13:08
我也是这样想的,有什么方法把DWG文件打包在fas文件或vlx文件里,再输入命令运行插入。我记得论坛有打包 ...

更简单的处理方式,将一个或多个图块保存为DXF文件,然后修改后缀为TXT,将其作为资源文件添加到VLX中,运行时先vl-getresource提取TXT内容,写入保存为DXF文件,然后insert DXF就有了图块定义,包括动态块。
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
本帖最后由 KO你 于 2025-8-28 10:54 编辑
kozmosovia 发表于 2025-8-28 10:51
更简单的处理方式,将一个或多个图块保存为DXF文件,然后修改后缀为TXT,将其作为资源文件添加到VLX中, ...

思路正确,但我不懂怎么操作,你能用LISP写一个程序出来吗

或者把步骤过程演变出来
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
这是好东西啊,谢谢楼主分享。
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
KO你 发表于 2025-8-28 10:53
思路正确,但我不懂怎么操作,你能用LISP写一个程序出来吗

或者把步骤过程演变出来

把多个动态块直接DXFOUT导出为WRAPDBLK.DXF,然后重命名为WRAPDBLK.TXT。创建VLX时,在资源文件那里选TXT文件并将WRAPDBLK.TXT加入。

将代码中的DYN1修改为其中一个动态块的块名,编译为VLX后,执行IMDB即可导入所有动态块定义。

  1. (Defun C:IMDB (/ SaveDXF DAT DOC DXF FNN OLD)
  2.   (Defun SaveDXF (dat fnn / ADO)
  3.     (setq ado (vlax-create-object "ADODB.Stream"))
  4.     (vlax-put-property ado "Type" 1)
  5.     (vlax-invoke ado "Open" nil nil nil nil nil)
  6.     (vlax-invoke-method
  7.       ado
  8.       "Write"
  9.       (vlax-make-variant
  10.   (vlax-safearray-fill
  11.     (vlax-make-safearray
  12.       17
  13.       (cons 0 (1- (length dat)))
  14.     )
  15.     dat
  16.   )
  17.       )
  18.     )
  19.     (vlax-invoke-method ado "saveToFile" fnn 2)
  20.     (vlax-invoke-method ado "Close")
  21.     (vlax-release-object ado)
  22.     (findfile fnn)
  23.   )
  24.   (and (null (tblsearch "Block" "DYN1"))
  25.        (setq dat (vl-catch-all-apply 'vl-get-resource (list "WRAPDBLK")))
  26.        (not (vl-catch-all-error-p dat))
  27.        (setq dxf (SaveDXF (vl-string->list dat)
  28.         (strcat (car (fnsplitl (vl-filename-mktemp)))
  29.           "WRAPDBLK.dxf"
  30.         )
  31.      )
  32.        )
  33.        (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  34.        (progn
  35.    (setq old (entlast))
  36.    (vla-import doc dxf (vlax-3d-point '(0. 0. 0.)) 1.)
  37.    (if old
  38.      (while (setq old (entnext old)) (entdel old))
  39.      (while (setq old (entlast)) (entdel old))
  40.    )
  41.    (vl-file-delete dxf)
  42.    (and (tblsearch "Block" "WRAPDBLK")
  43.         (vla-erase (vla-item (vla-get-blocks doc) "WRAPDBLK"))
  44.    )
  45.        )
  46.   )
  47.   (tblsearch "Block" "DYN1")
  48. )



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-4 10:59 , Processed in 0.166058 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表