求cad的一个lisp程序,要求鼠标点击一点后,在其旁输出坐标值(x,y,z)

作者&投稿:应伊 (若有异议请与网页底部的电邮联系)
求cad的一个lisp程序,要求鼠标在点击一点后,输入长、宽两个数值,就能出来矩形,并且自动画出矩形的对角线~

(defun c:hk ()
(setq xy1 (getpoint "请点击矩形左下角:")
kd (getreal "请输入宽度:")
cd (getreal "请输入长度:")
xy2 (polar xy1 0 cd)
xy3 (polar xy2 (angtof "90") kd)
xy4 (polar xy1 (angtof "90") kd)
)
(command "pline" xy1 xy2 xy3 xy4 "c")
(command "line" xy1 xy3 "")
(setq a (entlast))
(command "change" a "" "p" "lt" "x0" "")
(command "line" xy2 xy4 "")
(setq a (entlast))
(command "change" a "" "p" "lt" "x0" "")
)
试一试,是不是这个效果,,

复制下面的脚本到命令行回车即可加载,输入pldd,程序会提示选择pline,选择pline后会打印所有的三维坐标
(defun c:pldd (/ wb cc ss1 aa pts bhbz ent)
(setq ent (car (entsel "
请选择PLINE")))
(setq wb (entget ent) cc nil bhbz (cdr (assoc 70 wb)) )
(cond
((= (cdr (assoc 0 wb)) "POLYLINE")
(setq ss1 (entnext ent))
(while (/= ss1 nil)
(setq aa (entget ss1))
(if (= (cdr (assoc 0 aa)) "VERTEX") (progn
(setq aa (cdr (assoc 10 aa)))
(if (/= aa nil) (progn
(if (= (length aa) 2)
(setq aa (list (car aa) (cadr aa) 0.0) )
)
(if (= cc nil)
(setq pts aa)
)
(setq cc (cons aa cc))
))
(setq ss1 (entnext ss1))
)
(setq ss1 nil)
)
)
(if (= bhbz 1)
(setq cc (cons pts cc))
)
)
((= (cdr (assoc 0 wb)) "LWPOLYLINE")
(setq wb (member (assoc 10 wb) wb))
(while (assoc 10 wb)
(setq aa (cdr (assoc 10 wb)))
(if (= (length aa) 2)
(setq aa (list (car aa) (cadr aa) 0.0) )
)
(if (= cc nil)
(setq pts aa)
)
(if (= (length aa) 2)
(setq aa (list (car aa) (cadr aa) 0.0) )
)
(setq cc (cons aa cc) wb (cdr wb))
(if (assoc 10 wb)
(setq wb (member (assoc 10 wb) wb))
)
)
(if (= bhbz 1)
(setq cc (cons pts cc))
)
)
((= (cdr (assoc 0 wb)) "SPLINE")
(setq wb (member (assoc 11 wb) wb))
(while (assoc 11 wb)
(setq aa (cdr (assoc 11 wb)))
(if (= (length aa) 2)
(setq aa (list (car aa) (cadr aa) 0.0) )
)
(if (= cc nil)
(setq pts aa)
)
(setq cc (cons aa cc) wb (cdr wb))
(if (assoc 11 wb)
(setq wb (member (assoc 11 wb) wb))
)
)
)
)
cc
) ;end of defun

其实很简单的,不用三楼那么麻烦的。

(defun c:pt()

  (setvar "cmdecho" 0)

  (while (setq pt1 (getpoint "
请指定点位置:"))

    (setq point_x (rtos (car pt1) 2 2))

    (setq point_y (rtos (cadr pt1) 2 2))

    (setq point_z (rtos (caddr pt1) 2 2))

    (command "_text" pt1 "" "" (strcat "(" point_x "," point_y "," point_z ")"))

    )

(princ)

  )

效果如图所示



getpoint
(setq a (getpoint "dian"))
(setq b (strcat (rtos (car a) 2 2) "," (rtos (cadr a) 2 2) "," (rtos (caddr a) 2 2) ))
(command "-text" a "" "" b "")

不清楚你想怎么具体显示,下面的程序你可试试,我属LISP初级的那种,偶尔工作需要编个小东东自己用,见笑了哈。
(defun c:point()
(princ


CAD lis什么意思
LIST是CAD中的查询命令,输入该命令后,选择要查询的图形,可以知道它的长度,坐标等信息。

HIS、CIS、LIS、EMR、PACS、RIS、CAD以上在医疗行业都是指哪些系统,谢...
HIS(HospitalInformationSystem):由门诊和住院两部分组成,主要是药品和收费。CIS:临床信息系统。LIS(实验室信息管理系统)。EMR:电子病历。PACS:(图片存档及通讯系统)。RIS:放射学信息系统。CAD:计算机辅助检测CAD软件系统。

医院的HIS、CIS、LIS、EMR、PACS、RIS、CAD都是指哪些系统,谢谢,请...
CIS:英文是Clinic Infomation System,中文是临床信息系统,是以患者为核心,借助多种软件系统整合患者临床诊疗数据,主要是服务于病情诊断和处理、医学研究等临床活动,其核心功能是实现医疗过程管理的质效提升。CIS系统并非是单一的系统,而是一系列临床信息系统的集合。LIS:英文Laboratory Information Management...

cad2023序列号是什么?
cad2023密钥:001N1、001O1。cad2023序列号:666-69696969、667-98989898、400-45454545、066-66666666。cad2023是世界领先的2D和3DCAD工具的设计和文档软件,它将允许您使用其强大而灵活的功能来设计和塑造您周围的世界。用户可以使用它去加快文档编制、无缝分享想法并在3D中更直观地探索想法。cad2023软件拥...

医院的HIS、CIS、LIS、EMR、PACS、RIS、CAD都是指哪些系统,谢谢,请...
PACS:医学影像的智能仓库PACS,医学影像存贮与传输系统,专注于医学影像的存储、检索和分析,狭义上不包括预约登记,但广义上则扩展至业务流程和影像信息的全面管理。RIS:放射检查的业务处理专家RIS,放射信息系统,作为PACS的一部分,专门负责放射检查的预约、登记、报告审核等业务流程的高效管理。CAD:医疗...

HIS,CIS,LIS,EMR,PACS,RIS,CAD以上系统都适用于哪些科室?
HIS:是全院 ERM:电子病理管理 LIS:主要是检验科,接收门诊和住院等科室开的申请单,这个可以与HIS做接口 PACS:其实包含咯RIS,主要包含超声,放射、核磁这些科室,同样接收门诊和住院等科室开的申请单,这个可以与HIS做接口 CIS:临床信息系统不太了解 ...

cad多段线的标高不是整数如200.010或199.985,能否批量处理取整,lis能...
试试把标注的精度改为0就行了,你现在标注属性里的精度是0.000,所以很多小数出来。

CAD多选题考试题「附答案」
一、多选题 1、运行AutoCAD软件应基于( )操作平台。ABCD (A) Windows 95 (B) Windows NT (C) Windows2000 (D) Windows98 2、坐标输入方式主要有:ABC (A) 绝对坐标 (B) 相对坐标 (C) 极坐标 (D) 球坐标 3、 “AUTOCAD2002今日”对话框的“打开图形”选项卡用于打开已有图形,在该选项卡”的选择开始...

CAD绘图员考试多选试题「附答案」
一、多选题 1、运行AutoCAD软件应基于( )操作平台。ABCD (A) Windows 95 (B) Windows NT (C) Windows2000 (D) Windows98 2、坐标输入方式主要有:ABC (A) 绝对坐标 (B) 相对坐标 (C) 极坐标 (D) 球坐标 3、 “AUTOCAD2002今日”对话框的“打开图形”选项卡用于打开已有图形,在该选项卡”的选择开始...

请教高手用Visual LISP较为简单的开发CAD实例谁能给我几个!急
(setq lis (apply 'append (mapcar '(lambda (x) (list (car x) (cadr x) (caddr x))) pts)))(setq dou (vlax-make-safearray vlax-vbdouble (cons 0 (1- (* 3 (length pts)))(vlax-make-variant (vlax-safearray-fill dou lis)))(defun $dq-moveaction ( )(if (> (setq...

龙里县17869336227: 求cad的一个lisp程序,要求鼠标在点击一点后,输入长、宽两个数值,就能出来矩形,并且自动画出矩形的对角线 -
法怡脑得: (defun c:hk () (setq xy1 (getpoint "请点击矩形左下角:") kd (getreal "请输入宽度:") cd (getreal "请输入长度:") xy2 (polar xy1 0 cd) xy3 (polar xy2 (angtof "90") kd) xy4 (polar xy1 (angtof "90") kd)) (command "pline" xy1 xy2 xy3 xy4 ...

龙里县17869336227: 谁能帮我写个cad的lisp程序? -
法怡脑得: (defun c:mov1() ; 选择所有对象,平移-500000,0(setq ss (ssget "x" ))(command "move" ss "" (list 0 0) (list -500000 0)))(defun c:mov2() ; 选择所有对象,平移500000,0(setq ss (ssget "x" ))(command "move" ss "" (list 0 0) (list ...

龙里县17869336227: 求一个cad的LISP程序 -
法怡脑得: 我可以帮你编制,做到这个功能.请你先给这个命令起个名称.如果你愿意,我可以帮你起这个名字,就叫ct 吧(存图的意思).源代码如下,图形直接存到D:盘根目录下. (defun c:ct (/ dat file)(setq dat (rtos (fix (getvar "cdate"))))(setq file (strcat "d:" (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)) dat))(command "saveas" "" file "y")(princ "当前的DWG文件存储目录为:d:") )

龙里县17869336227: 求大神帮忙写一个cad的lisp程序 -
法怡脑得: 编了一个lisp 输入命令ZB再选择文字(defun c:ZB() (setq ss (ssget))(command "change" "p" "" "p" "c" "red" "")(command "scaletext" "p" "" "e" "100")) 接下来的你自己弄吧

龙里县17869336227: 帮忙写个CAD LISP程序,就是将一条线去除中间保留两端一定数值的.lisp -
法怡脑得: 可以首先把这几个线框做成面域,然后用面域合并命令合并面域.然后总面积就出来了.不用lisp就可以实现了.

龙里县17869336227: 编写一lisp程序 cad -
法怡脑得: 试编程序如下,请校核. (defun hang (p r n)(repeat n(command "circle" p r)(setq l (cons p l)p (polar p 0 (+ r r))))l ) (defun sjy (p r n / i p1 p2 p3 l)(setq i 0)(repeat n(hang p r (- n i))(setq i (1+ i)p (polar p (/ pi 3) (+ r r))))(setq p1 (last l)...

龙里县17869336227: cad高手,请看过来!!!求一个实现如下功能的lisp程序 -
法怡脑得: 朋友 我不知道你到底是遇到什么麻烦,但是你要是想算面积的话那就很简单,一个小小的AA命令就能解决.要是标注的话那就更不是问题,连续标注可以减少很多麻烦,就不用一个个的去点击了,很是方便快捷.但是你想要加载程序的话,我这也有,功能很多,要的话Q我:565588349,还有在CAD里面算面积也是有局限性的,要是有复杂曲线或是多段线还有样条曲线组成的闭合图框那么是算不了的,一般情况下,计算纯线段组成的封闭框面积是很容易的,首先你先创一个边界,然后AA命令就OK了.

龙里县17869336227: 求一个CAD中快捷相对移动的LISP -
法怡脑得: 你说的相对移动不需要写LISP程序的,可以使用移动命令move,选择对象-选择移动对象-选择相对基点-输入相对坐标(输入相对坐标时在坐标值前加一个"@"字符.就能实现你要的功能.也可以用以下LISP实现(defun c:m1 (/ a1 p1 p2) (prompt "选择移动对象:") (setq a1 (ssget)) (prompt "选择相对基点:") (setq p1 (getpoint)) (prompt "输入相对坐标:") (setq p2 (getpoint)) (command "move" a1 "" p1 (mapcar '+ p1 p2 ) ))

龙里县17869336227: 用lisp代码帮忙写个CAD小程序 -
法怡脑得: (defun c:n3() (vl-load-com) (setq cm (getvar "cmdecho") os (getvar "osmode")) (setvar "cmdecho" 0) (command "_undo" "be") (setq pdbz nil) (vlax-for obj (vla-get-Linetypes (vla-get-ActiveDocument (vlax-get-acad-object))) (if (= (vla-get-...

龙里县17869336227: 求一个lisp程序,关于提取CAD图像坐标 -
法怡脑得: 方案一:直接读取dwg格式文件有点难度,估计高手会做 方案二:若是文件有很多要做的话,可以用C#,C++,VB通过COM去开发,用COM方式依次打开dwg图档,然后遍历图元来进行你的要求来运算 方案三:若是文件有很多要做的话,也可以用AutoLisp来做,自动打开你的文件列表,然后遍历图元来进行你的要求来运算 方案四:若是文件不是很多的话,也可以手动打开dwg文件,然后编写lisp函数遍历图元来进行你的要求来运算 或者你发一些CAD参考图档给我,我来帮你看看到底怎么做合适 若是觉得满意的话还请采纳

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