yxp 发表于 2013-5-6 05:57:34

最精简的多文档管理标签[不用下载的源码]

本帖最后由 yxp 于 2013-5-6 06:02 编辑


不需要下载代码了,lisp 和 Odcl 已经合并了,直接从下面复制即可。
;;如果设置一下CAD的启动组,让CAD启动的时候自动加载代码,效果较好。
;;AutoCad多文档标签管理工具
(vl-load-com)
(defun mul-dwg()
(if (dcl_Form_IsActive muldwg_Form1)
   (dcl_Form_Close muldwg_Form1))
(dcl_project_import (odcl-code) nil nil)
; (dcl_project_load "muldwg.odcl")
(dcl_form_show muldwg_Form1)
(princ)
)
;;双击 listbox 时切换CAD文档
(defun c:muldwg_Form1_ListBox1_OnDblClicked (/ ss )
(setq ss (dcl_ListBox_GetItemText muldwg_Form1_ListBox1
          (dcl_ListBox_GetCurSel muldwg_Form1_ListBox1))
       ss1 (strcat "E:\\" (rtos (getvar "date") 2 9) ".sld"))
(if (assoc ss mul-dwg-filename)
      (setq mul-dwg-filename (subst (list ss ss1) (assoc ss mul-dwg-filename) mul-dwg-filename))
      (setq mul-dwg-filename (cons (list ss ss1) mul-dwg-filename)))
;(command "mslide" ss1);;这里试图生成当前CAD文件的缩略图,但是代码通不过,请教高手!!!!
(vla-Activate (cadr(assoc ss (dwgname-list))))
)
;;listbox改变时显示CAD缩略图
(defun c:muldwg_Form1_ListBox1_OnSelChanged (ItemIndexOrCount Value /)
(dcl_SlideView_Load muldwg_Form1_SlideView1 (cadr (assoc value mul-dwg-filename)))
)
;;主界面初始化
(defun c:muldwg_Form1_OnInitialize (/ ss curobj k hn)
(setq ss (mapcar '(lambda(x) (car x)) (dwgname-list))
       curObj (vla-get-ActiveDocument (vlax-get-acad-object)))
(setq k (vl-position curObj (muldwg-getalldocs)))
(dcl_ListBox_Clear muldwg_Form1_ListBox1)      ;;清空列表框
(dcl_ListBox_AddList muldwg_Form1_ListBox1 ss);;初始化列表框
(dcl_ListBox_SetCurSel muldwg_Form1_ListBox1 k);;选择当前文档
(setq hn (fix (cadr (getvar "SCREENSIZE"))))
(dcl_Control_SetHeight muldwg_Form1 hn)
(dcl_Control_SetHeight muldwg_Form1_ListBox1 (- hn 100))
(dcl_Control_SetTop muldwg_Form1_SlideView1 (- hn 97))
)
;;返回文档对象表
(defun muldwg-getalldocs (/ d)
(vlax-map-collection (vla-get-Documents (vlax-get-acad-object))
(function (lambda (x) (setq d (cons x d)))))
(reverse d)
)
;;返回文件名和对象
(defun dwgname-list(/ n s1 docname)
(setq obj-list (muldwg-getalldocs) n 0)
(repeat (length obj-list)
    (setq s1 (vl-filename-base (vla-get-name (nth n obj-list)))
          docname (cons (list s1 (nth n obj-list)) docname)
          n (1+ n))
)(reverse docname)
)
;;和窗口的宽度同步
(defun c:muldwg_Form1_OnSize (NewWidth NewHeight /)
(dcl_Control_SetWidth muldwg_Form1_ListBox1 (- NewWidth 4))
(dcl_Control_SetWidth muldwg_Form1_SlideView1 (- NewWidth 2))
)
(defun odcl-code()
'("YWt6A58KAAAeeBJzBuLD6DUxLT9quYFpNEWobDNtAhA2upbY9+qMFun8WFQm6zr9T7+s6PlqNmr7"
"arvbEaPfJYlAbWH392UpxI19hn/ydJD2Dz9DTQOy4wFy+h7Cs6KwEbCy4ueNtKMsJFffrPxtxvJ8"
"DOa/dkJ+4T2+2ESX9s5b9fL2zDa0BXZ3uq5YgygKNlH/H5rbu65bTFPxtwYZ2+G6f+dJUl03yunr"
"67RFyLeCKAeZm0EgJe1ORZgbWlnD8tKX7kdPlm1a2nO10TUED80BcIum0kmrWUixcFZxCytsL70f"
"Mp9cWDrpxPweO56XO9Q2IlyAPEKdjpBSLI7lE24oqV6s5rpvFx3m6OjvJx1WtLOqPaSLUA+uDQeo"
"70nT08vB1Jdd3Cs1KjLcMF8uY6xILanTl8D0GaoFSr6J1nG6L0WB6Yoqw2kOmhHToo4VnEm60faJ"
"RrB1k2TG77HwQOB1MPk4mZmqWTl0y6HQ4OkYPF/SRQRau9/eBLtO6bpjebsezURegBzeRNakHwK4"
"h9Pzbc64Trg1JYcHs1e1RUsJvEuwdZzpuh8McGUBrMcw2jFCo1ITKgIj7iFNBJpDfIuw4B0v4aWZ"
"ynuTynusDXZvOTHt49Fr1G3o0RSgKEgOEwDikO/egzGsABMK0QgkgeOiwumoYcnC0pEN8vzW6cbx"
"hlYP7LC1H8jxmsDOVRQQCkzKG4tym15SmRLxqs18xDPrthwiQuT9FN40juJUuy2cGbox9nXLBeaN"
"1Q+c96TDwhtjSS1awT4C+IjBPUI+wgudCJRJz6BTT+FvZFell2KXJ9KH0bJViKK4ATUK8WF2R6I8"
"lQEkxZbpV02l2x3MWL8bWKIRwubtzePogcKiEyPbmGXrZG2MF3SnKzT3x5wk21o02/U1/NF6Zojr"
"/hUOLaS2KTenOeDlzDihOC0IY1cUNCj6PNrvhiHZpG6PMxww4wW6yfaH3f8t80FcEG2hWQDOONTg"
"W4CxV9jhQcTFC2g=")
)
(mul-dwg)(princ)

wowan1314 发表于 2013-5-6 06:04:16

早上好!!

yxp 发表于 2013-5-6 06:06:36

本帖最后由 yxp 于 2013-5-6 06:22 编辑

谁有 base64 的Lsp转换程序,我看 odcl 代码的转换很不错,可用来进行简单的数据加密
明经班长老大们,高手中的高手,发挥一下你们的聪明才智吧。

我只能把数据转换到这种程度,字母越多压缩率应该越高吧
35352FDDCFCAB5C6B1C0D92F2D7B76792D5151513A61515E3A63525F362D35352FDDCFCAB5C6B1C0D92F2D352FDDCFCAB5DACEC3B1D4CA2F2D353E2D2FDCFBD1CCD0F5D7G3697F697B697F697BBFDBCCC9CCBEBFF9D3D7D0F3B0C7697F697B697F697BE4F7CCE4C7D2B0C7697F697B697F697BC2E5D0F3C0B9E1E5CCE5E3D3B0C72F362D353F2D403D362D35402D3E3D362D35412D453D362D35422D7B7679362D35432D7B7679362D35442D35352F3E2F2D2FE2C0DDE1DACE2F2D2F3F3D3B3D3D2F2D2F3E453B3D3D2F2D2F3E3D3B3D3D2F2D2F403D3B3D2F2D2F413D3B3D2F2D2FD8BBDACEC7DCD8F02F3636362D35452D35352F3E2F2D2F3F3B3D3D2F2D2F3E3B423D2F2D2F3D3B423D2F2D2F3E423B3D2F2D2F3E403D2F362D352F3F2F2D2F3F3B3D3D2F2D2F3E3B423D2F2D2F3D3B423D2F2D2F3E423B3D2F2D2F3E403D2F362D352F402F2D2F3F3B3D3D2F2D2F3E3B423D2F2D2F3D3B423D2F2D2F3E423B3D2F2D2F3E403D2F362D352F412F2D2F3F3B3D3D2F2D2F3E3B423D2F2D2F3D3B423D2F2D2F3E423B3D2F2D2F3E403D2F362D352F422F2D2F3F3B3D3D2F2D2F3E3B423D2F2D2F3D3B423D2F2D2F3E423B3D2F2D2F3E403D2F362D352F432F2D2F3F3B3D3D2F2D2F3E3B423D2F2D2F3D3B423D2F2D2F3E423B3D2F2D2F3E403D2F3636362D35462D353E3B3D2D3E2D2F3D3B42

Gu_xl 发表于 2013-5-6 11:51:21

将窗体的Event Invoke的属性设置为1 !

cnks 发表于 2013-5-6 12:35:07

可惜我不用odcl

flytoday 发表于 2013-5-6 12:40:13

这个怎么个用法这个~

yxp 发表于 2013-5-6 19:27:08

本帖最后由 yxp 于 2013-5-6 19:30 编辑

Gu_xl 发表于 2013-5-6 11:51 http://bbs.mjtd.com/static/image/common/back.gif
将窗体的Event Invoke的属性设置为1 !
感谢!
event invoke 设置为1仍然出现以下错误,估计还是异步处理的问题
错误: invalid AutoCAD command: nil

想加入一个文档反应器,在文档更名、窗口切换的时候刷新一下 list_box 窗口,
奈何看了半天反应器函数没搞出来

这里有lsp和odcl代码分开的包:

Gu_xl 发表于 2013-5-6 21:37:48

yxp 发表于 2013-5-6 19:27 static/image/common/back.gif
感谢!
event invoke 设置为1仍然出现以下错误,估计还是异步处理的问题
错误: invalid AutoCAD comman ...

一般来说,Event Invoke设为0,用dcl_sendstring替代command,就不会出错了!

sicky111 发表于 2013-5-6 23:42:11

错误: no function definition: DCL_LISTBOX_GETCURSEL

yxp 发表于 2013-5-7 19:02:59

sicky111 发表于 2013-5-6 23:42 static/image/common/back.gif
错误: no function definition: DCL_LISTBOX_GETCURSEL

DCL_LISTBOX_GETCURSEL 是Odcl的内部函数,你连 OpenDCL.**.arx 都没有?
页: [1] 2
查看完整版本: 最精简的多文档管理标签[不用下载的源码]