近期打算优化自己的一个插件,功能是通过复制、粘贴的方式完成递增
思路:
1、在复制时,用ssgetfirstt对所有被复制图元进行判断是否为要进行的图元,并进行登记
2、在粘贴后,用entlast对生成的图元进行分析和判断,写入递增数据
通过大量的实验,基本可以断定的是:
AutoCAD的复制顺序与粘贴顺序无关,复制时无论怎么选,粘贴的顺序都是按对应复制的图元的句柄/图元名的顺序生成的。
因为不知道Windows剪切板的操作流程和原理,就一个黑匣子一样,不知道复制和粘贴这两个过程,AutoCAD是怎样建立两个过程之间的对应关系,是否有这方面的资料可供参考,谢谢
在网上找了一段代码
 - (defun getcopy (/ HTML RESULT)
- (and (setq HTML (vlax-create-object "htmlfile"))
- (setq RESULT (vlax-invoke (vlax-get (vlax-get HTML 'PARENTWINDOW) 'CLIPBOARDDATA) 'GETDATA "Text"))
- (vlax-release-object HTML)
- )
- RESULT
- )
本人对Autolisp还马马虎虎,对Vlisp一直感觉在门口打转,上面这段代码,只能得到剪切板的文字部分,应该是(vlax-get (vlax-get HTML 'PARENTWINDOW) 'CLIPBOARDDATA) 'GETDATA "Text")最后的这个“Text”决定的,请教如何能得到当前剪切板的完整信息,Autolisp函数的参数,有资料方便查找和学习,如:《AutoLISP函数参考(明经翻译版)》,Vlax函数仿佛只介绍函数名,后面的参数怎么获得呢?有点摸不着头绪。
谢谢。
|