M76 发表于 2022-7-6 11:36:38

vla获取资源

我试图将dxf文件打包到vlx中,但我遇到了问题。提取的dxf被autocad拒绝。
 
如果它不存在,我将使用它向图形中添加一个块。
 
(if (= (tblsearch "BLOCK" "jkdatb04") nil)
(progn
        (setq dxf (vl-get-resource "kapcsjel"))
        (setq tempf (vl-filename-mktemp nil nil ".dxf"))
        (setq f (open tempf "w"))
        (write-line dxf f)
        (close f)
        (command "_-insert" tempf "0,0" "" "" "")
        (vl-file-delete tempf)
));
 
有什么建议吗?
 
如果我比较原始dxf和新dxf,确实存在6字节大小的差异,但不管怎样,内容似乎是相同的。

MSasu 发表于 2022-7-6 11:51:00

可以是与原始DXF文件和新DXF文件中使用的格式化控件相关的内容-我是指回车/换行。您是否尝试用记事本或其他简单的文本编辑器打开新文件?可能会发现所有行都压缩为一行,因此文件被AutoCAD渲染为不可用。只是一个建议。

M76 发表于 2022-7-6 12:08:27

 
是的,我打开了它,它看起来是一样的,除了6字节大小的差异。
 
我用比较工具检查了一下,似乎缺少了一些换行符,但我不知道为什么。为什么只有几个?我数了数,有4个人失踪了。
 
http://mumia.uw.hu/compare.PNG

MSasu 发表于 2022-7-6 12:20:34

一种解决方法是尝试将存储的文件转换为单个字符串,方法是使用分隔符连接行–我建议使用选项卡(代码ASCII 9)。如果文件大小超过32767个字符,则需要拆分为多个字符串。
当需要记录目标DXF文件时,只需用新行字符替换制表符-这种方式将避免不需要的(不支持的)控件。

M76 发表于 2022-7-6 12:31:20

谢谢,成功了。我用文件中的一个选项卡替换了CR+LF。然后我在代码中把标签换成了lf。
 
(setq kapcsolojeldxf(vl list->string(subst(ascii“\n”)(ascii“\t”)(vl string->list(vl get resource“kapcsjel”)))))

MSasu 发表于 2022-7-6 12:39:30

M76欢迎你!我很高兴能帮助你!
当做
页: [1]
查看完整版本: vla获取资源