明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9670|回复: 18

[原创]画剖面线的小程序

  [复制链接]
发表于 2006-9-30 11:17 | 显示全部楼层 |阅读模式

主要是因为atuocad中剖面线选择麻烦,我是搞机械的.就弄了个这个.应该考虑比较全面了.

也许我写得比较罗嗦,希望大虾们给斧正一下.另外

  (while (/= 0 (getvar"cmdactive"))     ;没有它回不到原来图层
      (command pause)               
  )
这段话,我也不知道具体真正含义,,只是知道能使一个命令不中断.没它在这里就回不到原来的图层了.cmdactive这变量,说明写得我都看不懂.也无人可问.

另外,我想把输入行或是执行回车动作减少一个,比如输入间距的时候如果不输入,就可以直接插入选择点了,而不是需要回车一下.试了好多方法,不行.请高手指点.

还有,执行过程中按esc后,图层就返回不到原始层了,而是就在hatch层了.如果再加个判断呢?

;画剖面线,主要功能就是自己设定层,也考虑了其它影响因素
(defun c:xh(/ oldlay a xlt xoce xos angb angd)
  (setq xoce (getvar "cmdecho"))  ;回显特性给xoce
  (setvar "cmdecho" 0)            ;取消回显
                      
  (setq xos (getvar "osmode"))    ;捕捉特性赋值给xos
        
  (setvar "osmode" 0)             ;取消捕捉
  (setq oldlay (getvar"clayer"))  ;原始图层状态赋值给oldlay
  (setq angb (getvar  "angbase" ));取角度起始方向
  (setq angd (getvar  "angdir" )) ;取角度旋转方向
  (setvar "angbase" 0.0)          ;x轴(东)为0
  (setvar "angdir" 0)             ;逆时针为正


  (setq xlt (getvar "dimscale"))               ;取得标注比例因子给xlt
  (if (null (tblsearch "LAYER" "hatch"))       ;如果还没有hatch图层
    (command "._layer" "_m" "hatch" "_c" 2 ""   
             "_lt" "continuous" "" "") ;则创建hatch图层,颜色2,线型continuous
    (setvar"clayer" "hatch")           ;否则直接转换到hatch图层            
  )

  (if (not  xjd)                   ;如果从未确定过剖面线角度
      (setq xjd 45))               ;则令默认角度为45
  (setq a xjd)                     ;将角度暂存在a中
  (setq xjd (getreal(strcat"\n请输入剖面线角度<" (rtos xjd) "%%d>")))  ;输入角度令提示中出现角度值
  (if (not  xjd)                   ;如果空输入
      (setq xjd  a))               ;则从a中取值

  (if (not xjj )                   ;如果从未确定过剖面线间距
      (setq xjj 2))                ;则令默认间距为2
  (setq a xjj)                     ;将间距暂存于a中
  (setq xjj (getreal(strcat "\n请输入剖面线间距<"(rtos xjj) ">")))  ;输入间距令提示中出现间距值
  (if (not xjj )                   ;如果空输入
      (setq xjj  a))               ;从a中取值


  (princ"\n请选择剖面线插入点")    ;纯粹提示,因为前面已经令回显关闭
  (command ".-bhatch" "p" "u" xjd (* xlt xjj) "n" )  ;画剖面线,其中间距是考虑了比例因子的
 
  (while (/= 0 (getvar"cmdactive"))     ;没有它回不到原来图层
      (command pause)               
  )
 

  (setvar"clayer" oldlay)               ;返回原图层
  (setvar "osmode" xos)                 ;回原捕捉方式
  (setvar "angbase" angb)               ;返回角度初始
  (setvar "angdir" angd)                ;返回角度旋转方向
  (setvar "cmdecho" xoce)               ;回原回显状态
  (princ)                     ;打印空行
)

发表于 2023-3-9 14:19 | 显示全部楼层
话剖面线虽然软件自带,但是能自己编写也很牛逼了
发表于 2006-10-4 06:17 | 显示全部楼层
谢谢啊.东西很好.学习中..呵.不过为什么没有放LISP文件下来.嘿嘿.好久都没有做这种程序了,谢谢分享
 楼主| 发表于 2006-10-8 08:31 | 显示全部楼层
我不太会用格式,上传个文件也太麻烦.就贴上去了.这样复制一下就可以了.
发表于 2007-4-17 00:45 | 显示全部楼层
多谢多谢
发表于 2007-4-24 17:01 | 显示全部楼层
原来 hatch 还有这种用法。 受教了。
发表于 2008-8-10 23:16 | 显示全部楼层
谢谢!
发表于 2008-12-24 21:41 | 显示全部楼层
加个错误函数,出错时,就会返回之前的层
发表于 2009-2-16 21:37 | 显示全部楼层

谢谢提供,学习了

发表于 2011-3-21 10:02 | 显示全部楼层
如何关联呢?
发表于 2011-4-6 22:01 | 显示全部楼层
谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 10:17 , Processed in 0.298871 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表