autolisp 怎么让生成的图形或者文字随着鼠标移动 然后点击后才固定到屏幕上呢?

作者&投稿:乜败 (若有异议请与网页底部的电邮联系)
autolisp 怎么得到text类型文字的长度呢 ?然后想通过这个计算鼠标点击文字,计算点到~

(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)
   )
  )
 )
);原理是写好了文字,由于鼠标移动,那么删除文字并重新写文字,这样就看上去文字在移动



博罗县17886048159: autolisp 怎么让生成的图形或者文字随着鼠标移动 然后点击后才固定到屏幕上呢? -
吕邓凯因: ;;;插入文字;;;;;;;;;;(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 工具 ->加载应用程序

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网