- 积分
- 64508
- 明经币
- 个
- 注册时间
- 2010-5-9
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 自贡黄明儒 于 2015-4-9 11:07 编辑
将别的VLX打包进自己的VLX(测试与实战)
highflybird曰:DynamicWrapperX 是一个ActiveX部件,它可以极大程度地扩展LISP的编程范围,赋予DCL
和VLISP更多功能
压缩包内EditElv.VLX、EditElv.txt、TEST.VLX三个文件
1 EditElv.VLX是G版发布的拉线赋等高线高程程序
2 EditElv.txt是根据highflybird程序(http://bbs.mjtd.com/thread-85724-1-1.html),将
EditElv.VLX转成的二进制文件。
3 TEST.VLX是将EditElv.lsp、EditElv.txt编译的文件。
第一步 注册DynamicWrapperX
第二步 将EditElv.VLX转成EditElv.txt
第三步 编写自己的lisp文件,保存为EditElv.lsp
第四步 将EditElv.lsp、EditElv.txt编译成自己的vlx文件,test.VLX
第五步 加载test.VLX
第六步 执行命令EditElv,成功!!!
自己的lisp文件
(vl-load-com)
;;;Write Binary file from strings
(defun WriteBinary (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)
)
)
)
(defun C:EditElv (/ NAME)
(setq name (vl-filename-mktemp "EditElv.vlx"))
(WriteBinary name (vl-get-resource "EditElv"))
(load name)
(VL-file-delete name)
(C:EditElv)
)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
评分
-
查看全部评分
|