本帖最后由 958620832 于 2013-10-16 12:01 编辑

兄弟贴:动态引线标注 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=102054

从自身需要予以改版,现公布于众。

该程序具有如下几大特点:

1.设置缺省值,代替兄弟程序中对于档案的保存和调用,个人习惯而已。

2.线上和线下都可以写入文字,应用范围更广 。而兄弟程序中,文字只能写在线上。

(defun bz (/ *error* name1 name2 name3)

(defun *error* (msg) ;将描述错误的字符串存入变量msg

(entdel name1) (entdel name2) (if name3 (entdel name3))

(princ "错误: ")(princ msg)) ;打印错误信息

(setq ty (getvar "TEXTSTYLE"))

(setq kd1 (caadr (textbox (list '(0 . "text")(cons 1 txt1)(cons 40 300)(cons 41 0.7)(cons 7 ty)))))

;字高300,字宽高比0.7,可以自己设置,字体为当前字体

(setq kd2 (caadr (textbox (list '(0 . "text")(cons 1 txt2)(cons 40 300)(cons 41 0.7)(cons 7 ty)))))

;字高300,字宽高比0.7,可以自己设置,字体为当前字体

(setq kd (max kd1 kd2) kd (+ kd 50))

(setq p (getpoint "\n输入基点:"))

(setq pd t)

(while pd

(setq gr (grread t 4 1) mode (car gr) pt (cadr gr))

(if (= kd3 0) (setq kd kd1))

(if (and (listp pt) (>= (car pt) (car p))) (progn

(setq p0 (polar pt 0 kd))

(setq p1 (polar pt 0 (/ (- kd kd1) 2)) p1 (polar p1 (angtof "90") 50))

(setq p2 (polar pt 0 (/ (- kd kd2) 2)) p2 (polar p2 (angtof "270") 350))))

(if (and (listp pt) (< (car pt) (car p))) (progn

(setq p0 (polar pt pi kd))

(setq p1 (polar p0 0 (/ (- kd kd1) 2)) p1 (polar p1 (angtof "90") 50))

(setq p2 (polar p0 0 (/ (- kd kd2) 2)) p2 (polar p2 (angtof "270") 350))))

(if (= mode 5) (progn

(if name1 (entdel name1))

(entmake (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(100 . "AcDbPolyline")'(90 . 3)

(cons 10 p)(cons 10 pt)(cons 10 p0)))

(setq name1 (entlast))

(if name2 (entdel name2))

(entmake (list '(0 . "text")(cons 1 txt1)(cons 40 300)(cons 41 0.7)(cons 10 p1)(cons 7 ty)))

;字高300,字宽高比0.7,可以自己设置,字体为当前字体

(setq name2 (entlast))

(if name3 (entdel name3))

(if (= kd3 1) (entmake (list '(0 . "text")(cons 1 txt2)(cons 40 300)(cons 41 0.7)(cons 10 p2)(cons 7 ty))))

;字高300,字宽高比0.7,可以自己设置,字体为当前字体

(if (= kd3 1) (setq name3 (entlast)))))

(if (= mode 3) (setq pd nil))

(if (or (= mode 2) (= mode 25)) (progn (setq pd nil) (entdel name1) (entdel name2) (if name3 (entdel name3)))))

(princ))

(defun getdata ()

(setq txt1 (get_tile "a1"))

(setq txt2 (get_tile "a2"))

(if (= (get_tile "a3") "0") (setq kd3 0) (setq kd3 1)))

(defun c:yxbz ()

;(步骤1)建立临时对话框

(setq tempname (vl-filename-mktemp "temp.dcl") filen (open tempname "w"))

(foreach stream

'("yxbz:dialog{"

"\n  label = "动态引线标注";"

"\n  :edit_box {key = \"a1\"; label = \"线上文字:\"; width = 40 ;}"

"\n  :toggle {key = \"a3\"; label = \"增加线下文字\"; value = "0";}"

"\n  :edit_box {key = \"a2\"; label = \"线下文字:\"; width = 40; is_enabled = false;}"

"\n  ok_cancel;}")

(princ stream filen))

(close filen)

(setq dclname tempname)

;(步骤2)加载并显示对话框

(setq dcl_re (load_dialog dclname))

(if (not (new_dialog "yxbz" dcl_re)) (exit))

;(步骤3)定义对话框控件(运用set_tile、action_tile、mode_tile、get_tile等函数)

(if txt1 (set_tile "a1" txt1) (set_tile "a1" "动态标注"))

(if txt2 (set_tile "a2" txt2) (set_tile "a2" "动态标注"))

(if kd3 (set_tile "a3" (rtos kd3))) ;注意set_tile函数中赋值均为字符串(带双引号),就连关键词也要加上双引号。

(if (= kd3 0) (mode_tile "a2" 1))

(if (= kd3 1) (mode_tile "a2" 0))

(action_tile "a3" "(if (= (get_tile \"a3\") \"0\") (mode_tile \"a2\" 1) (mode_tile \"a2\" 0))") ;点击时才起作用

(action_tile "accept" "(getdata)(done_dialog 1)")

(action_tile "cancel" "(done_dialog)")

;(步骤4)激活并卸载对话框,并进行对话框隐藏后的操作。

(setq std (start_dialog))

(unload_dialog dcl_re)

(vl-file-delete dclname)

(if (= std 1) (bz))

(princ))

标注界址点号lisp_动态引线标注(改版) - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - 动态 - Powered by Discuz!...相关推荐

  1. lisp写标高线_属性块形式的标高标注程序! - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    欢迎来拍砖 说明:由于本人经常要用标高做一些计算(尤其是总图),所以个人认为做成属性标高有利于其他程序直接调用数据(比如说计算总图排水坡度坡向等),所以用标高块的形式做标高,喜欢的可以拿去用用.... ...

  2. lisp文字上标源码_创建文本/标注样式源码 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    本帖最后由 zhengxiansz 于 2014-4-27 11:27 编辑 GU_xl你好! 请帮我看一下这个创建文本/标注样式源码.第一次输入IT1命令时没有报错的提示.如果重复输入IT1命令时就 ...

  3. LISP 圆孔标记_做了一个检查图框内字体和标注的插件 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    本帖最后由 WWYYBB1015 于 2019-12-16 21:04 编辑 根据大家的要求,更新一下修改标注文字引线的功能.插件会根据图框比例自动创建一个新的标注样式,例如:名称为机械标注5.找到代 ...

  4. lisp新建标注式样_创建标注样式后续消零问题 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    DIMASO      关                    创建标注对象 DIMSTYLE    ISO-25               当前标注样式 (只读) DIMADEC     0  ...

  5. 方孔分段的lisp_常用函数.lsp - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    本帖最后由 自贡黄明儒 于 2013-11-11 12:57 编辑 ;;各位,把你们收藏都拿出秀一秀呀,放在箱底会生霉的 ;;我的收集是在caoyin发布的通用函数基础上扩展的----自贡黄明儒 20 ...

  6. lisp绘制棱锥_动态绘制示坡线 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    本帖最后由 20060510412 于 2018-11-4 22:11 编辑 [code="lisp] ;; ;;动态示坡线   by 明经通道  QQ9034598  小蜜蜂  2013- ...

  7. cad四边形展开lisp_批量绘制四边形 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    ;试用以下程序 (defun c:test() (setq bcsjb '(("A1" 9549.31 6977.53 7180.75 7155.97 11015.11) (&qu ...

  8. cad抛物线曲线lisp_曲线的转弯半径和曲率 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    ;;;============================================================= ;;; 一般平面曲线参数方程的曲率离心公式 ;;; 功能: 获取曲线上 ...

  9. cad线段总和lisp_求一个线段长度总和与生成文本 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...

    像这种 ;;;;;计算面积,周长.显视在图面上 (defun C:am (/ s text1 text2 ss l i totalarea ename obj insertpt insertpt1) ...

最新文章

  1. VS2013+openCV3.0无脑配置方法+解决警告问题【windows平台】
  2. 企业网络推广——网站页面布局优化对于企业网络推广来说非同一般
  3. python语言可以在哪系统操作-python能检测到它运行的是哪个操作系统?
  4. python对笔记本电脑的要求-笔记本电脑中多版本python的配置
  5. 笨办法学python47详解_练习 47 - 自动化测试 - 笨办法学Python3
  6. gacutil.exe Path
  7. Tomcat服务器java.lang.IllegalArgumentException异常
  8. Java ClassLoader getPackage()方法与示例
  9. html中basefont标签,HTML的basefont标签
  10. spring mysql事物级别_mysql事务级别和spring中应用
  11. SAP License:FI疑难问题小结
  12. Python与数据挖掘学习笔记(1)——Pandas模块
  13. AD20输出PDF 打印 位号图 焊接图
  14. 手游加速器:[求助]安卓端 手游变速器,类似光环助手的实现方式是怎样的?...
  15. Git 团队协作中常用术语 WIP PTAL CC LGTM 等解释
  16. 微分几何 Class 3 曲线,曲率与挠率
  17. 2020 年 1 月 14 日外延支持结束后继续接收安全更新的过程
  18. Android肝帝战纪之基于上篇单Activity+多Fragment框架,开发电商式导航栏,多Fragment切换
  19. vim 使用set paste 解决多行复制粘贴乱序问题
  20. 所有专业课考c语言的学校,计算机考研哪些学校专业课考408?一共82所院校

热门文章

  1. [附源码]Python计算机毕业设计大学生体检管理系统
  2. 斯沃服务器没有正确安装,VS2017 没有正确安装调试器
  3. 搭建Wiki+JIRA超详细教程
  4. python pgm转jpg批处理
  5. Kettle5.4统计各部门工资总额
  6. 走进印度 探秘班加罗尔高科技园区
  7. starram内存条怎么样_starram内存牌子_星存内存条
  8. 去找工作被问为什么离职?我能说部门优化,被解雇了嘛?
  9. 2021-11-11调味品行业
  10. 编程的苦与乐(摘自《人月神话》)