只需一步,快速开始
大家好,这是我使用的一个很好用的画圆和直线中心线程序,在使用过程中发现如下问题啦!
如果在相交线比较多的情况下,画出来的中心就不准确,不是偏的就是中心线是斜的!
另外,我还想控制中心线的长度,就是说我画12MM中心线,我想让中心线为13MM,望大侠们帮我改改!
您需要 登录 才可以下载或查看,没有账号?注册
使用道具 举报
确实,有的时候不能正常画出来。。。
有图为证都是按楼主的程序画的。。
运行前先把osmode变量保存(setq old_osm (getvar "osmode"))
再设置为(setvar "osmode" 0)
进入程序
。。。。。。
最后恢复原来的变量(setvar "osmode" old_osm)
兄弟,不行呢!
再改改啦
;;;中心线自动标注,角平分线有问题(DEFUN c:cc ();(warn)(setq old_osm (getvar "osmode"))(setq cl_old (getvar "clayer"))(setvar "cmdecho" 0);----------------------------------------------------------------------------------------- (if (not (tblsearch "layer" "cen")) (command "_.layer" "_new" "cen" "_color" "1" "cen" "_ltype" "center" "cen" "") (command "_.layer" "thaw" "cen" "on" "cen" "unlock" "cen" "") );------------------------------------------------------------------------------------------(setq sel_id "OK" cl_ent1 (entsel "\:请选取直线LINE 圆弧ARC 圆CIRCLE:"))(while (and sel_id cl_ent1) (setq cl_dat1 (entget (car cl_ent1)) cl_nam1 (cdr (assoc 0 cl_dat1))) (if (and (/= "LINE" cl_nam1) (/= "ARC" cl_nam1) (/= "CIRCLE" cl_nam1)) (setq cl_ent1 (entsel "\r:请选取直线LINE 圆弧ARC 圆CIRCLE:")) (setq sel_id nil) ))(if (and cl_ent1 (null sel_id)) (progn (setq cl_lay (cdr (assoc 8 cl_dat1))) (if (= "LINE" cl_nam1) (progn (setq cl_ent2 (entsel "\:请选取另一直线:")) (if cl_ent2 (progn (setq cl_dat2 (entget (car cl_ent2)) cl_nam2 (cdr (assoc 0 cl_dat2))) (if (/= "LINE" cl_nam2) (exit) (progn (setq cl_pt1 (trans (cdr (assoc 10 cl_dat1)) 0 1) cl_pt2 (trans (cdr (assoc 11 cl_dat1)) 0 1) cl_pt3 (trans (cdr (assoc 10 cl_dat2)) 0 1) cl_pt4 (trans (cdr (assoc 11 cl_dat2)) 0 1) cl_pt5 (trans (cadr cl_ent1) 0 1)) (if (<= (distance cl_pt1 cl_pt5) (distance cl_pt2 cl_pt5)) (setq cl1_pt cl_pt1 cl2_pt cl_pt2) (setq cl1_pt cl_pt2 cl2_pt cl_pt1) ) (if (<= (distance cl_pt3 cl_pt5) (distance cl_pt4 cl_pt5)) (setq cl3_pt cl_pt3 cl4_pt cl_pt4) (setq cl3_pt cl_pt4 cl4_pt cl_pt3) ) (setq cl_pnt1 (polar cl1_pt (angle cl1_pt cl3_pt) (* 0.5 (distance cl1_pt cl3_pt))) cl_pnt2 (polar cl2_pt (angle cl2_pt cl4_pt) (* 0.5 (distance cl2_pt cl4_pt)))) (setvar "clayer" "cen") (setvar "osmode" 0) (command "CELTSCALE" (/ cl_rad 3));设置当前线型比例 (command "line" (polar cl_pnt1 (angle cl_pnt2 cl_pnt1) (* 0.1 (distance cl_pnt1 cl_pnt2))) (polar cl_pnt2 (angle cl_pnt1 cl_pnt2) (* 0.1 (distance cl_pnt1 cl_pnt2))) "") (setvar "clayer" cl_old) (setvar "osmode" old_osm) (setvar "CELTSCALE" (getvar "ltscale")) ) ) ) ) ) (progn (setq cl_pt (trans (cdr (assoc 10 cl_dat1)) 0 1) cl_rad (cdr (assoc 40 cl_dat1)))(if (= "ARC" cl_nam1) (progn (setvar "clayer" "cen") (setvar "osmode" 0) (command "CELTSCALE" (/ cl_rad 25));设置当前线型比例 (command "line" (list (+ (* 0.2 cl_rad) (car cl_pt)) (cadr cl_pt)) (list (- (car cl_pt) (* 0.2 cl_rad)) (cadr cl_pt)) "") (command "line" (list (car cl_pt) (+ (* 0.2 cl_rad) (cadr cl_pt))) (list (car cl_pt) (- (cadr cl_pt) (* 0.2 cl_rad))) "") (setvar "clayer" cl_old) (setvar "osmode" old_osm) (setvar "CELTSCALE" (getvar "ltscale")) ) (progn (setvar "clayer" "cen") (setvar "osmode" 0) (command "CELTSCALE" (/ cl_rad 3));设置当前线型比例 (command "line" (list (+ (* 1.2 cl_rad) (car cl_pt)) (cadr cl_pt)) (list (- (car cl_pt) (* 1.2 cl_rad)) (cadr cl_pt)) "") (command "line" (list (car cl_pt) (+ (* 1.2 cl_rad) (cadr cl_pt))) (list (car cl_pt) (- (cadr cl_pt) (* 1.2 cl_rad))) "") (setvar "clayer" cl_old) (setvar "osmode" old_osm) (setvar "CELTSCALE" (getvar "ltscale")) ;(princ (/ cl_rad 25)) )) ) ) ))
(princ)) ;;
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2024-5-18 20:26 , Processed in 0.344212 second(s), 26 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.