真是泪流满面啊
本帖最后由 masterlong 于 2015-1-12 21:54 编辑很久以前编了一个程序
用来快速插入块
功能很简单
图中点选一个块
再选一个点
如果是我专业上用的特定块
就按图纸比例插入
否则按x=y=1插入
我的专业图块中
有两个块是需要在插入后调整Y比例方向的
郁闷的是command`insert不支持选项
而这个方向无法事先确定
只能在插入后人工判断
长久以来我试过了无数的方法
希望在插入选点时
就能通过输入选项来“即时”反向Y比例
以免去插入后再手动镜像块的麻烦
遗憾的是始终没有好的解决方案
今天
就在刚才
我终于找到了解决的办法
原来express早就提供了
支持选项输入的实时拖动函数
真是泪流满面
一行泪是开心
一行泪是痛心啊
下面是简化代码
供有此困惑的朋友参考
(defun c:tt()
(arxload "acetutil.arx")
(setq ss (ssget ":e:s" '((0 . "insert"))))
(if ss
(progn
(setq blk (ssname ss 0))
(setq po (cdr (assoc 10 (entget blk))))
(command "copy" blk "" "non" '(0 0) "non" '(0 0))
(redraw (setq klb (entlast)) 2)
(setq klss (ssadd klb))
(tt_getinspo)
)
)
(princ)
)
(defun tt_getinspo()
(initget 128 "M N")
(setq inspo (acet-ss-drag-move klss po "指定插入点 : "))
(cond
( (= inspo "M") (command "mirror" klss "" "non" po "non" (polar po 0 1000) "y")(redraw klb 2) (tt_getinspo) )
( (= inspo "N") (command "mirror" klss "" "non" po "non" (polar po (* 0.5 PI) 1000) "y")(redraw klb 2) (tt_getinspo) )
( (= (type inspo) 'STR) (princ " 无效的选项 ") (tt_getinspo) )
( (listp inspo) (command "move" klb "" "non" po "non" inspo) )
( T (command "erase" klss "") )
)
(princ)
) 感觉镜像没必要吧?entmake的时候把x或者y弄成-1不行么,command的时候也能输入x y z吧? 可是选取角度的时候
就不能再改变xyz了
我的程序只能在选角度时
才能确定是否需要反向y比例 以上代码只是示意
实际代码会在旋转时使用选项的
不管怎么样
有了这3个函数
很多以前不能或不容易实现的想法
现在都可以实现了 你什么专业呀???? 自贡黄明儒 发表于 2015-1-13 08:05
你什么专业呀????
电气
特定块是疏散指示灯
块中有剪头
应该指向最近的疏散出口
这个只能是人工判断
当然硬要事先给出出口位置
或者在指定插入点的时候
改变Y为负也不是不行
但是实际操作就非常繁琐了
以前我采用的办法
是建立一个工具按钮
需要反向时点一下
中断插入反向Y再重插入
和预想的不太一样啊
旋转拖动函数不接受选项?
看来和标准的get类函数还是有区别
反向只能在移动拖动时进行了
终于想起来了
当年我曾经试过express的旋转拖放函数
结果发现不支持选项
帮助说明中也没说移动拖放支持选项
所以以为三个都不支持
加上doslib比express强大不止一点
于是果断放弃了express
顶楼主,求完善? 没法完善
这个程序本身是很个性化的
而不是通用型的
如果硬要做成通用型的程序
在以上代码的基础上加上出错处理
基本就差不多了
说到底编程首先是要看需求的
页:
[1]