发个gif
先发个gif
mikewolf2k 发表于 2019-3-11 09:01
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=32200&highlight=%B6%E0%D6%D8%CE%C4%B1%BE
谢谢!
我这里有段代码,只能用一次,请帮忙看看,究竟是什么问题,不能每次都重刷 ob_id吗 谢谢!
(defun ob_id (ent /)
(setqs_na (cdr (assoc -1 tar))
v-na (vlax-ename->vla-object s_na)
n_na(vla-get-objectid v-na)
nna (itoa n_na)
)
)
;;;刷视窗MV比例值
(Defun c:tt1 (/ src tar)
(setq tar (car (entsel "\n选择对象(视口)")))
(setq src (nentselp "\n 选择属性块 :"))
(setq src (vlax-ename->vla-object (car src)))
(vlax-property-available-p src "TextString")
(null (redraw (vlax-vla-object->ename src) 3))
(vla-put-textstring src
(strcat "%<\\AcObjProp Object(%<\\_ObjId "
nna
">%).CustomScale \\f \"1:%lu2%ct1%qf2816\">%"
)
)
(command "_.Regen")
(princ)
) 明白你的意思了
很好的想法
虽然我本身并不需要
但是两个功能结合起来也没啥冲突
代码实现也没难度
等空闲的时候可以加上这个
两种处理方式
对我而言其实有着不同的应用场景
SCR的批处理方式
主要用作批打印、图纸清理等
而打开文件的跨档操作
我更多的不是批量
而是指定文档进行切换
切换后执行指定操作
举个例子
我的一个程序获取当前文档所有图框信息
按工程名称、子项名称、图号分类
并形成列表显示于对话框中
点击列表的某一条目时
自动缩放窗口到对应的图框
这个功能以前只能应用于当前文档
利用dbx最多做到切换文档
但不能在切换后缩放
而现在就可以支持多文档任意切了
masterlong 发表于 2019-3-7 10:17
我的批打印程序本身有一个设置
打印过程中PDF窗口和CAD窗口并列
打印结束后再改变两个窗口一个大一个小
你的要点是跨文档进行某种操作么?如果是这样,根据你的演示,似乎是当前打开的文档批量操作,如果这样的话,得事先打开需要处理的文档,文件数量多(成百上千)的话是不大现实的。建议在添加一个功能,能够按文档列表批处理,依次打开,处理,关闭。 厉害 期待分享程序 就是多文档批量替换嘛。
建议从excel读取替换列表,实现多关键字多文档批量替换。
我在源码共享版块放出了VBA版的。 本帖最后由 masterlong 于 2019-3-7 10:05 编辑
昨天晚上急着走
GIF录制的不好
采用文本替换作演示内容
效果猛一看
和用DBX技术操作其它文档差不多
重新录了一个GIF
这个应该不会引起误会了
我的批打印程序本身有一个设置
打印过程中PDF窗口和CAD窗口并列
打印结束后再改变两个窗口一个大一个小
所以演示中窗口在不时地变化
希望不会看花眼
提醒一下
文本替换或者批打印
其实都不是重点 你说对了
就是针对已打开图纸进行批量处理
非DBX方法
而是真实的切换文档后执行操作
批量打开、处理、关闭的批处理程序
早就有了
技术上没啥难度
无非建立一个SCR文件再执行
两种处理方式各有各的用途
比如
我不能为了要批量处理
就关闭所有已打开的图纸
批处理以后再打开吧
虽然文件集关闭再打开也能实现
总归是浪费时间啊
本帖最后由 masterlong 于 2019-3-7 11:36 编辑
这个跨档操作或者说切档操作
和DBX方式实现的跨档
最大的不同
是可以在操作代码中使用ssget
而DBX的跨档严格来说应该是读档
只能遍历所有图元进行判断
换句话说
很多已有的程序
不需要修改或者简单修改后就可以使用
而DBX则需要专门编写相应程序
masterlong 发表于 2019-3-7 11:27
这个跨档操作或者说切档操作
和DBX方式实现的跨档
最大的不同
我知道vba可以,用excelvba可以通杀。但是lisp一直没有研究出来怎么跨文档
能否分享一下思路? lisp的跨档操作我研究过很久
尝试过文档反应器
可能是水平不够
没有任何结果
现在能够实现
是借助了opendcl的OnDocActivated事件
结合vl-propagate函数进行参数控制
稍后我会另开一贴
放上源码并提供详细的编程思路