土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ cad 二次开发 lisp

cad 二次开发 lisp

发布于:2005-06-23 00:02:23 来自:建筑设计/CAD下载及教程 [复制转发]
有些编程者编程时没有考虑到用户环境的不同,经常所编制的程序能运行在自制的模板图形上,而不能在用户的图形中运行,这种情况也是我经常碰到的。

最容易碰到的是图层。程序中,经常会使用特定的图层来放置程序所生成的对象,比如说你将图层设置为“3”层,写出的程序如下:

(setq oldLayer ( getvar "clayer")) ;将当前图层保存起来,以便以后的恢复
(setvar "clayer" "3") ;将图层“3”转换为当前图层

这时,如果用户当前图形中在存在“3”图层,程序就会出错并中断。为此,你首先应判断“3”图层是否存在,采用以下的函数判断图层的存在:

(tblobjname "layer" "3")

这时,如果图层“3”确实不存在时,则可用以下函数内容建立该名称的图层:

(entmake (list
’(0 . "LAYER")
’(100 . "AcDbSymbolTableRecord")
’(100 . "AcDbLayerTableRecord")
’(6 . "CONTINUOUS")
’(62 . 3)
’(70 . 0)
’(2. "3")
)
)
这样就可以建立新图层,完整的程序如下:

(setq old_lay (getvar "clayer"))
(if (=(tblobjname "LAYER" "3") nil)
(progn
(entmake (list
’(0 . "LAYER")
’(100 . "AcDbSymbolTableRecord")
’(100 . "AcDbLayerTableRecord")
’(6 . "CONTINUOUS")
’(62 . 3)
’(70 . 0)
(cons 2 "3")
)
)
)
)
(setvar "clayer" "3")

全部回复(4 )

只看楼主 我来说两句
  • shejiyuan0110
    shejiyuan0110 沙发
    我现在也对LISP感兴趣 楼主可有关于LISP的教程 我一直找都没找到
    如果楼主找到了 能不能发到我电子邮箱里去
    邮箱地址zhangfly0110@163.com
    谢谢了
    2005-09-05 20:18:05

    回复 举报
    赞同0
  • sunissky
    sunissky 板凳
    有时候作为中间处理用时,可以把某些特征值保存,然后再释放。
    2005-07-02 10:54:02

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.08 万条内容 · 657 人订阅

猜你喜欢

阅读下一篇

出不来图

我在把PKPM的图转成DWG图后用CAD2002编辑.然后在转成CADR14去出图.可是有些图出得来有些图出不来.不来往请问各位前辈这是怎么回事?有什么解决的方法没有?

回帖成功

经验值 +10