- 积分
- 7534
- 明经币
- 个
- 注册时间
- 2012-8-28
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 言戲無軍 于 2019-8-18 10:56 编辑
将dwg dll写为二进制文本打包到vlx后还原文件的问题
将dwg dll写为二进制文本有不死猫老师的函数
- [code=lisp];[code=lisp]Subject:binary conversion to text by lisp 二进制文件转文本
- ;Writen:nonsmall(不死猫)
- ;Date:2009 10 18
- ;All Rights Reserved 版权所有 nonsmall(不死猫)
- ;Contact: QQ:43797405 Email:nonsmall@163.com
- (defun binaryToText(FileName / ADODB.Stream)
- (Setq ADODB.Stream (Vlax-Get-Or-Create-Object "ADODB.Stream" ))
- (Vlax-Put-Property ADODB.Stream 'Type 1 )
- (Vlax-Invoke ADODB.Stream 'Open )
- (Vlax-Invoke-Method ADODB.Stream 'LoadFromFile FileName )
- (Vlax-Put-Property ADODB.Stream 'Position 0 )
- (Vlax-Invoke-Method ADODB.Stream 'Write (car (list (Vlax-Invoke-Method ADODB.Stream 'Read (Vlax-Get ADODB.Stream 'Size )) (Vlax-Put-Property ADODB.Stream 'Position 0 ))))
- (Vlax-Put-Property ADODB.Stream 'Position 0 )
- (Vlax-Put-Property ADODB.Stream 'Type 2 )
- (Vlax-Put-Property ADODB.Stream 'CharSet "us-ascii" )
- (Vlax-Invoke ADODB.Stream 'ReadText)
- ;(vlax-release-object ADODB.Stream)
- )
- ;Test
- ;(binaryToText "d:\\new.fas")
- ;(binaryToText "d:\\034.dwg")
- ;(binaryToText "d:\\double_line.gif")
将二进制文本还原为dwg.dll的函数目前只看到高飞鸟的函数,在08CAD下,32位CAD正常使用,但在2010以上64位CAD都失败,WIN10 系统
- [code=lisp];;;Write Binary file from strings 高飞鸟大师
- (defun WriteBinary1 (FileName buffer / wsObj str)
- (if (setq wsObj (vlax-create-object "ScriptControl"))
- (progn
- (vlax-put wsObj "language" "VBS")
- (setq str
- "Sub WriteBinary(FileName, Buf)
- Const adTypeBinary = 1
- Const adSaveCreateOverWrite = 2
- Dim stream, xmldom, node
- Set xmldom = CreateObject("Microsoft.XMLDOM")
- Set node = xmldom.CreateElement("binary")
- node.DataType = "bin.hex"
- node.Text = Buf
- Set stream = CreateObject("ADODB.Stream")
- stream.Type = adTypeBinary
- stream.Open
- stream.write node.NodeTypedValue
- stream.saveToFile FileName, adSaveCreateOverWrite
- stream.Close
- Set stream = Nothing
- Set node = Nothing
- Set xmldom = Nothing
- End Sub"
- )
- (vlax-invoke wsObj 'ExecuteStatement str)
- (vlax-invoke wsObj 'run "WriteBinary" Filename buffer)
- (vlax-release-object wsObj)
- (princ)
- )
- )
- )
不知道有没有高手能将第二个还原的函数修改下,感觉vbs在高版本下可能受限制。或者共享下私藏。
拜托了。
高飞鸟大师在2011年就解决这个问题了,只支持32位CAD,如果有dynamwrapperx可以用新的 高飞鸟源码如下:真实能用的,猫老师那个不行。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|