365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐提纲范文entmake函数在AutoLisp程序设计中的运用探讨

添加时间:2010-4-6
365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐导读:(2012)008003402  作者介绍:郎建山(1979-),男,国电南京自动化股份有限公司/南京南自科林系统工程有限公司工程师,探讨方向为发电厂水处理技术。  0引言  AutoLisp?是?Autodesk?公司集成在?Autocad?软件内部的二次开发编程语言,其易学、易用,即使是初学者也能在较短时间内编写出精彩程序,与Autocad软件自身又具有完
摘要:主要介绍了AutoLisp二次开发AutoCAD历程中entmake函数的功能、性能以及利用策略。

  关键词:AutoCAD;AutoLisp;entmak

  16727800(2012)008003402

  作者介绍:郎建山(1979-),男,国电南京自动化股份有限公司/南京南自科林系统工程有限公司工程师,探讨方向为发电厂水处理技术。

  0引言

  AutoLisp 是 Autodesk 公司集成在 Autocad 软件内部的二次开发编程语言,其易学、易用,即使是初学者也能在较短时间内编写出精彩程序,与Autocad软件自身又具有完美的兼容性,由此受到广大工程师的青睐,用其撰写了无数工程实用工具,大大提升了工作效率。在 AutoCAD 二次开发历程中,entmake 作为 AutoLisp 功能函数之一,发挥着重要作用。

  1entmake函数的功能

  在图形中创建一个新图元:(entmake \[elist\])

  参数elist:图元定义数据表,其格式与 entget 函数返回表的格式相似。elist 参数必须包含创建图元的全部必要数据,如果省略了任何一个必须的定义数据,该函数就会返回 nil 并拒绝创建该图元。如果省略了可选的定义数据(如图层),entmake 利用缺省值。

  2entmake函数的性能

  在 AutoCAD 二次开发历程中,“entmake”并不是唯一在图形中创建一个新图元的策略,也可采取“command”函数调用AutoCAD 内部命名的策略在图形中创建一个新图元。下面以实例浅析两者性能的优缺点。

  例子:在 AutoCAD 中以pt1和pt2为端点绘制一条直线

  command策略:(command "line" pt1 pt2 "")

  entmake策略:(entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)))

  上例中,command策略在编程结构上比较简洁,操作习惯符合常规的CAD命令利用。但在如“捕捉”等环境因素影响下,有时候可能得不到正确的图元,同时command运转速度较慢。entmake策略不受环境因素影响,在运转速度上大约是command策略的300倍,实践证明在创建大量图元时利用entmake对提升程序的效率具有积极的作用。初学者通常喜欢采取command策略,对于有经验的工程技术人员,在等同的条件下,会优先利用entmake。

  3entmake函数的利用策略

  在实际编程历程中,entmake 所需的elist参数——图元定义数据表结构非常复杂,不同图元的数据表不同,相同图元的必要数据和可选的定义数据的组合又非常多。如果缺少必要数据,entmake则无法创建图元,如果定义数据过多又会使得程序冗长,初学者很难灵活掌握。由此,熟悉各种图元的必要数据是正确利用entmake的关键。

  下面总结了entmake创建各种图元的必要数据,省略了如图层、颜色等可选的定义数据。编程人员可根据实际情况灵活添加可选的定义数据。

  直线

  (entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)))

  两顶点多段线(多顶点类似)

  (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 2) (cons 10 pt1) (cons 10 pt2)))

  点表生成多段线

  (entmake (append(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (length lst)))(mapcar '(lambda(pt)(cons 10 pt )) lst )))

  圆

  (entmake (list '(0 . "CIRCLE") (cons 10 pt) (cons 40 r)))

  圆弧

  (entmake (list '(0 . "ARC") (cons 10 pt) (cons 40 r) (cons 50 ang1) (cons 51 ang2)))

  单行文本

  (entmake (list '(0 . "TEXT") (cons 1 str) (cons 10 pt) (cons 40 5)))

  多行文本

  (entmake (
上一篇: 365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐********论远程教育进展的内在逻辑 下一篇: 毕业365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐网基于校企合作的运用型软件工程人才培养方式探讨
穗丰365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐网———写经典365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐经典的网站,找毕业365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐范文,365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐格式模板,365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐****就上穗丰365bet体育在线下载_365bet娱乐场注册_365bet提款多久到帐网!