autolisp 怎么让生成的图形或者文字随着鼠标移动 然后点击后才固定到屏幕上呢?
(defun changdu (#k / #k %k1 %k2 %k3 %k4 %k5 %k6 L);输入文字属性列表得到文字长度 (setq %k1 (assoc 0 #k) ;文字 %k2 (assoc 1 #k) ;文字内容 %k3 (assoc 40 #k);文字高度 %k4 (assoc 41 #k);文字倾斜度 %k5 (assoc 7 #k) ;文字样式 %k6 (assoc 51 #k);文字角度 L (caadr (textbox (list %k1 %k2 %k3 %k4 %k5 %k6)));文字长度 ) L);这个是一个子程序,输入文字属性列表就可以得到文字长度;;;;;实例;;;;(defun c:sx9 ( / &k1 #k L) (setq &k1 (entsel "
请选择文字"));选择文字 (setq #k (entget (car &k1))) ;得到文字属性列表 (setq L (changdu #k)) ;得到文字长度 (princ L) ;命令行显示长度 (prin1))
首先为这个物体添加一个碰撞器,之后挂一个脚本
bool isTrue=false;
void OnMouseDown(){
isTrue=true;
}
void OnGUI(){
if(isTrue){
GUI.TextArea(new Rect(10, 10, 200, 100), "balabalabala", 200);
}
}
大致上是这么个意思
;;;插入文字;;;;;;;;;;
(defun C:sx9 ( / #k %k i gr n pt)
(setq #k "1";文字内容
%k T ;循环条件
i nil ;初始设置
)
(while %k
(setq gr (grread t 4 0);;取得鼠标操作及坐标
n (car gr) ;;鼠标操作
pt (cadr gr) ;;鼠标坐标
)
(if (= n 5);;没有操作
(progn
(if (/= i nil) (entdel i) );;如果有文字就删除
(entmake
(list
'(0 . "TEXT") ;;文字
(cons 1 #k) ;;文字内容
(cons 40 200) ;;文字高度
(cons 41 0.7) ;;文字倾斜度
(cons 10 pt) ;;文字插入点
(cons 7 "standard");; 文字样式
(cons 8 "0") ;;文字图层
));;重新生成文字
(setq i (entlast));;得到文字图元名
)
)
(if (= n 3) (setq %k nil) );;3表示左键;结束循环
(if (or (= n 2) (= n 25));;2表示空格;25表示右键;结束循环并删除文字
(progn
(setq %k nil)
(entdel i)
)
)
)
(prin1)
);复制到记事本以(SX9.lsp)命名,加载到AutoCAD就可以使用。
;;;;;;;;;;;;说明一下;;
;这个是一个插入文字内容为"1"的程序,如果你有文字内容,那么修改为下面的子程序:
(defun sx9 (#k / #k %k i gr n pt)
(setq %k T ;循环条件
i nil ;初始设置
)
(while %k
(setq gr (grread t 4 0);;取得鼠标操作及坐标
n (car gr) ;;鼠标操作
pt (cadr gr) ;;鼠标坐标
)
(if (= n 5);;没有操作
(progn
(if (/= i nil) (entdel i) );;如果有文字就删除
(entmake
(list
'(0 . "TEXT") ;;文字
(cons 1 #k) ;;文字内容
(cons 40 200) ;;文字高度
(cons 41 0.7) ;;文字倾斜度
(cons 10 pt) ;;文字插入点
(cons 7 "standard");; 文字样式
(cons 8 "0") ;;文字图层
));;重新生成文字
(setq i (entlast));;得到文字图元名
)
)
(if (= n 3) (setq %k nil) );;3表示左键;结束循环
(if (or (= n 2) (= n 25));;2表示空格;25表示右键;结束循环并删除文字
(progn
(setq %k nil)
(entdel i)
)
)
)
);原理是写好了文字,由于鼠标移动,那么删除文字并重新写文字,这样就看上去文字在移动
吕邓凯因: ;;;插入文字;;;;;;;;;;(defun C:sx9 ( / #k %k i gr n pt) (setq #k "1";文字内容 %k T ;循环条件 i nil ;初始设置 ) (while %k (setq gr (grread t 4 0);;取得鼠标操作及坐标 n (car gr) ;;鼠标操作 pt (cadr gr) ;;鼠标坐标...
博罗县17886048159: autolisp如何绘制水平矩形图形? - ?
吕邓凯因: (defun c:tt() (setq p1 (getpoint "\n选取矩形第一点:>")) (setq p2 (getpoint "\n选取矩形第二点:>")) (command "_rectang" p1 p2) (prin1)) 这是最简单的画矩形的程序
博罗县17886048159: autolisp如何绘制水平矩形图形? - ?
吕邓凯因:[答案] (defun c:tt() (setq p1 (getpoint "\n选取矩形第一点:>")) (setq p2 (getpoint "\n选取矩形第二点:>")) (command "_rectang" p1 p2) (prin1) ) 这是最简单的画矩形的程序
博罗县17886048159: 怎么用Autolisp编写程序画一个外切半径为100的六角星 - ?
吕邓凯因: (defun c:cp () (setvar "cmdecho" 0) (setq cenpt (getpoint "输入圆心:") ) (setq rad (getdist cenpt "输入半径:") ) (setq num (getint "\n 输入多边形边数:") ) (command "polygon" num cenpt "i" rad) (prin1)) 我编的这个没有...
博罗县17886048159: 利用autolisp编写绘制正三角形的命令 - ?
吕邓凯因: (defun c:lwx() ;(setq p0 (getpoint "确定基点:")) ;(setq d (getreal "\n:")) ;(setq ld (getreal "\n:")) ;(if (> ld (* 2 d)) ;(princ "OK")(setq ld (* 2 d)) ) (setq p1 (polar p0 (* 0.5 pi) (* 0.5 d))) ;计算p1至p14点坐标.(setq p2 (polar p1 ...
博罗县17886048159: CAD自动画杆路插件Autolisp该怎么使用 - ?
吕邓凯因: 1. autolisp程序可以用记事本打开,在里面【(defun c:命令 ()】,这个命令可以修改,也就是运行程序命令. 2. 打开cad,输入命令【appload】加载程序,并加入【启动组】,这样以后打开cad就可以使用,不用重复加载. 3. 由于插件编写的习惯不同,功能也略有不同.输入插件命令后,一般命令行会有提示,按提示操作.
博罗县17886048159: 用autolisp编写绘制的命令 - ?
吕邓凯因: 源程序如下:(defun c:box (/ p p1 p2 a) (setq p (getpoint "Left & Bottom point: ") a (getdist p "A=") ) (command "PLINE" p (setq p1 (polar p 0 a)) (setq p2 (polar p1 (/ pi 2) a)) (polar p2 (- pi) a) "C"))
博罗县17886048159: 如何用autolisp编辑命令进行图案填充 - ?
吕邓凯因: 首先设置把三角全部显示在电脑上,所有捕捉关掉,计算得到 三角形内部其中一个点坐标值,以坐标值为点填充,恢复捕捉.----------以上是我的思路,你在验证一下
博罗县17886048159: autolisp 怎么新建图形文件,AUTOCAD中已设定默认模板. - ?
吕邓凯因: 《AutoCAD2002试题汇编》本书题啊考ATA 操作步骤(我都写菜单命令便找选择按钮):1、文件——新建——acadiso.dwt2、格式——图形界限——0,0(车)——120,90(车)3、格式——图层——框选择白色位置——新框选择红色——确定——确定4、文件——保存——弹图形另存"框——文件类型改AutoCAD板文件(*.dwt)—— 候路径已经变要保存于改考试存盘位置5、接着写文件名KSCAD1-1.DWT——保存6、考试候定要关闭AutoCAD软件做题 本书100道题都做完遍考试没问题
博罗县17886048159: 在CAD中如何编辑很多的命令,然后直接直接生成图形? - ?
吕邓凯因: 若用脚本来执行命令,可以用任意文本编辑器来编辑.调入脚本 工具 ->运行脚本 若用lisp来执行命令,可以用CAD自带的lisp编辑器或其它的文本编辑器来编辑lisp程序.加载lisp 工具 ->Autolisp ->加载 若用VBA来执行命令,建议用CAD自带的VBA编辑器编辑 加载VBA 工具 ->加载应用程序