dimradius by AutoLisp in AutoCAD

栏目: Lisp · 发布时间: 7年前

内容简介:dimradius by AutoLisp in AutoCAD

dimradius by AutoLisp in AutoCAD

eryar@163.com

最近在开发一个自动出图程序,从PDMS模型中取数据后,经过处理生成AutoCAD的图纸。其中涉及到一个问题就是如何尽量使程序与AutoCAD低耦合,尽量不使用第三方库的情况下,实现数据的传递。

最开始想到是用ODA(Open Design Alliance)的DWGdirect库来直接生成DWG文件,并且PDMS中就是使用这个库来生成DWG文件的。DWGdirect的用法与AutoCAD .Net的接口名称基本一致,用法也相同,但是这样就引入了第三方库。

还有一种方法就是使用AutoLisp脚本来生成图纸。这样的话,程序只需要生成一个AutoLisp脚本文件,文件中包含创建图形的命令。AutoLisp脚本与PDMS的PML类似,都需要一个解析执行的环境,即PML依赖PDMS平台才能运行,AutoLisp依赖AutoCAD平台。如果使用AutoLisp,程序不依赖DWG相关的第三方库,只需要生成一个文本文件。决定使用AutoLisp后,还有一个问题,就是如何在启动AutoCAD能自动加载生成的AutoLisp文件去生成图纸。

从网上查到自动加载程序的方法:About Auto-Loading and Running AutoLISP Routines:

http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-FDB4038D-1620-4A56-8824-D37729D42520 ,发现使用acaddoc.lsp的方法最方便。方法如下:

1. 使用一个模板DWG文件Template.dwg;

2. 在模板DWG文件Template.dwg相同的目录中,放一个acaddoc.lsp脚本文件,其中内容可以参考如下方式:

dimradius by AutoLisp in AutoCAD

3. 程序生成一个脚本文件myapp.lsp到acaddoc.lsp的文件夹中,然后再打开模板DWG文件Template.dwg。

经过上述处理,程序在打开模板DWG文件的时候会启动AutoCAD,启动AutoCAD的时候会加载acaddoc.lsp文件,在acaddoc.lsp中又会加载myapp.lsp,这样就会执行myapp.lsp中的命令,自动生成图纸了。

图形的生成可以使用AutoCAD中的命令,如生成直线可以使用line,生成圆可以使用circle,等等。对生成的图形进行标注的时候,发现线性标注很方便使用命令自动生成,但是想标注半径或直径的时候,一直没有测试成功。后来测试成功后,将这些命令记下来,方便查询。

; ; create a circle at (0,0,0) and radius is 8
(setq aCenter (list 0 0 0))

(setq aRadius 8)

(command "circle" aCenter aRadius "")

; ; remember the circle and dimradius
(setq aCircle (entlast))

(setq aPoint (polar aCenter 45 aRadius))

(setq aDim (cons aCircle (list aPoint)))

(command "dimradius" aDim aPoint)

; ; zoom all


(command "zoom" "e")

打开Template.dwg的时候,会自动生成如下内容:

dimradius by AutoLisp in AutoCAD

使用AutoLisp脚本文件来作为数据交换的方式来开发程序,可以使自己的程序不依赖DWG读写相关的第三方库,使程序更稳定。

使用AutoLisp来自动生成标注的时候,线性标注很容易生成,只需要指定几个点即可。可是生成半径或直径标注数据时,因为需要选择圆弧,AutoLisp不是那么直观。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ggplot2:数据分析与图形艺术

ggplot2:数据分析与图形艺术

哈德利·威克姆 (Hadley Wickham) / 统计之都 / 西安交通大学出版社 / 2013-5-1 / CNY 46.00

中译本序 每当我们看到一个新的软件,第一反应会是:为什么又要发明一个新软件?ggplot2是R世界里相对还比较年轻的一个包,在它之前,官方R已经有自己的基础图形系统(graphics包)和网格图形系统(grid包),并且Deepayan Sarkar也开发了lattice包,看起来R的世界对图形的支持已经足够强大了。那么我们不禁要问,为什么还要发明一套新的系统? 设计理念 打个比......一起来看看 《ggplot2:数据分析与图形艺术》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具