明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1319|回复: 9

[源码] 真是泪流满面啊

[复制链接]
发表于 2015-1-12 21:49:07 | 显示全部楼层 |阅读模式
本帖最后由 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)
)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-1-12 22:10:38 来自手机 | 显示全部楼层
感觉镜像没必要吧?entmake的时候把x或者y弄成-1不行么,command的时候也能输入x y z吧?
 楼主| 发表于 2015-1-12 22:19:37 来自手机 | 显示全部楼层
可是选取角度的时候
就不能再改变xyz了
我的程序只能在选角度时
才能确定是否需要反向y比例
 楼主| 发表于 2015-1-12 22:28:06 来自手机 | 显示全部楼层
以上代码只是示意
实际代码会在旋转时使用选项的

不管怎么样
有了这3个函数
很多以前不能或不容易实现的想法
现在都可以实现了
发表于 2015-1-13 08:05:36 | 显示全部楼层
你什么专业呀????
 楼主| 发表于 2015-1-13 08:29:11 来自手机 | 显示全部楼层
自贡黄明儒 发表于 2015-1-13 08:05
你什么专业呀????

电气
特定块是疏散指示灯
块中有剪头
应该指向最近的疏散出口
这个只能是人工判断
当然硬要事先给出出口位置
或者在指定插入点的时候
改变Y为负也不是不行
但是实际操作就非常繁琐了
以前我采用的办法
是建立一个工具按钮
需要反向时点一下
中断插入反向Y再重插入
 楼主| 发表于 2015-1-13 10:17:13 来自手机 | 显示全部楼层
和预想的不太一样啊
旋转拖动函数不接受选项?
看来和标准的get类函数还是有区别
反向只能在移动拖动时进行了
 楼主| 发表于 2015-1-13 11:48:44 | 显示全部楼层
终于想起来了
当年我曾经试过express的旋转拖放函数
结果发现不支持选项
帮助说明中也没说移动拖放支持选项
所以以为三个都不支持
加上doslib比express强大不止一点
于是果断放弃了express
发表于 2015-1-13 17:44:16 | 显示全部楼层
顶楼主,求完善?
 楼主| 发表于 2015-1-13 18:39:48 | 显示全部楼层
没法完善
这个程序本身是很个性化的
而不是通用型的
如果硬要做成通用型的程序
在以上代码的基础上加上出错处理
基本就差不多了
说到底编程首先是要看需求的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-23 10:11 , Processed in 0.163295 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表