AutoLISP在测绘中的应用讲座2(3) [上一篇] [下一篇]

[ 2010-11-11 19:53:52 | 作者:motu | 出处:原创 | 天气:晴 ] 字体:

3 实现图层批量转换的范例

上两讲,我们已经学习了几个AutoLISP函数基本用法。其实我们学任何东西都不要急于求成,AutoLISP程序的学习也一样,如果最初就拿大篇幅来做讲解,这会扼杀我们的兴趣。而且,力图要让在学中体会,在学的过程中试着去应用,这会让初学者找到兴趣找到成就感。学这样的东西,初学者若使用开发宝典去学,那样十有八九会把我们拒绝在这个编程天地的门外。下面我们还是以选择集的使用入手,以实现图层批量转换的范例来学习程序的制作来做一下讲解。

(defun c:bc() ;1

(command "layer" "n" "交通设施" "S" "交通设施" "c" "6" "" "") ;2

(command "layer" "s" "0" "") ;3

(setq ss (ssget "x" (list (cons 8 "dlss")))) ;4

(if ss ;5

(command "change" "p" "" "p" "layer" "交通设施" "") ;6

) ;7

(command "change" "p" "" "p" "c" "bylayer" "") ;8

);end ;9

上面程序中遇到了新的函数defun,defun函数用于在AutoLISP程序中定义函数,其格式为:

(defun name [argument])

其中 name为函数名;argument为函数列表

示例:

(defun adnum();略

(defun adnum(abc);略

(defun adnum(/a b);略

以上使用方式这次不用,故略去。

(defun c:adnum(),在函数名前加上c:后,此函数就可以通过在AutoCAD的Command:提示符后输入其函数名来执行。如果没有使用c:,函数名则必须置于圆括号中。

在没有完全搞懂这组程序语句之前,我们把不甚理解的地方把它想成是固定模式,这样对学习AutoLISP程序是很好的,有些很难理解的东西在随后学习的时日里会不攻自破的。要说明的一点,AutoLISP程序的括号是成对出现的,也就是最终左括号的个数要和右括号的个数匹配。这个程序1部分是定义了函数bc;2部分是用command函数使用AutoCAD的layer命令在 AutoCAD中创建“交通设施”图层,并且定义图层的颜色为品红;3部分是定义图形的当前层为0层;4部分是定义一个选择集,用来过滤dlss层;5部分是个条件语句,如果ss不为空,则继续往下执行程序;6部分是command函数利用change命令来实现把dlss层中的实体改到“交通设施”层中去;8部分是利用change这个命令把当前图形中的颜色还原为层本身颜色。

以上是对这个程序的解释,其中英文状态下的双引号""是代表回车的意思,看起来不难吧。但上述程序只是实现把“dlss”层转成“交通设施”层去,但实际上我们的图形中往往会有很多层。这里只要稍加改动,一个实现cass图层批量转为已定义好汉字层的程序就会呈现在眼前,程序如下:

(defun c:bc()

(command "layer" "n" " 交通设施" "S" "交通设施" "c" "6" ""

"n" "地貌" "S" "地貌" "c" "1" ""

"n" "居民地" "S" "居民地" "c" "2" ""

"n" "管线" "S" "管线" "c" "6" ""

"n" "控制点" "S" "控制点" "c" "4" ""

"n" "高程" "S" "高程" "c" "7" ""

"n" "植被" "S" "植被" "c" "3" ""

"n" "注记" "S" "注记" "c" "3" ""

"n" "独立地物" "S" "独立地物" "c" "4" ""

"n" "图廓" "S" "图廓" "c" "7" ""

"n" "等高线" "S" "等高线" "c" "3" ""

"n" "水系" "S" "水系" "c" "5" ""

"n" "中线层" "S" "中线层" "c" "7" ""

"n" "记曲线" "S" "计曲线" "c" "2" ""

"")

(command "layer" "s" "0" "")

(setq ss (ssget "x" (list (cons 8 "dgx"))))

(if ss

(command "change" "p" "" "p" "layer" "等高线" "")

)

(setq ss (ssget "x" (list (cons 8 "dldw"))))

(if ss

(command "change" "p" "" "p" "layer" "独立地物" "")

)

(setq ss (ssget "x" (list (cons 8 "dlss"))))

(if ss

(command "change" "p" "" "p" "layer" "交通设施" "")

)

(setq ss (ssget "x" (list (cons 8 "dmtz"))))

(if ss

(command "change" "p" "" "p" "layer" "地貌" "")

)

(setq ss (ssget "x" (list (cons 8 "gcd"))))

(if ss

(command "change" "p" "" "p" "layer" "高程" "")

)

(setq ss (ssget "x" (list (cons 8 "gxyz"))))

(if ss

(command "change" "p" "" "p" "layer" "管线" "")

)

(setq ss (ssget "x" (list (cons 8 "jmd"))))

(if ss

(command "change" "p" "" "p" "layer" "居民地" "")

)

(setq ss (ssget "x" (list (cons 8 "kzd"))))

(if ss

(command "change" "p" "" "p" "layer" "控制点" "")

)

(setq ss (ssget "x" (list (cons 8 "sxss"))))

(if ss

(command "change" "p" "" "p" "layer" "水系" "")

)

(setq ss (ssget "x" (list (cons 8 "tk"))))

(if ss

(command "change" "p" "" "p" "layer" "图廓" "")

)

(setq ss (ssget "x" (list (cons 8 "zbtz"))))

(if ss

(command "change" "p" "" "p" "layer" "植被" "")

)

(setq ss (ssget "x" (list (cons 8 "zj"))))

(if ss

(command "change" "p" "" "p" "layer" "注记" "")

)

(setq ss (ssget "x" (list (cons 8 "中线"))))

(if ss

(command "change" "p" "" "p" "layer" "中线层" "")

)

(command "change" "p" "" "p" "c" "bylayer" "")

);end


把此程序粘贴进记事本里以bc.lsp的文件名保存到某目录下,打开一幅由cass软件绘制的地形图,然后用调用应用程序命令appload加载该程序,然后在命令行上输入bc,正常即可执行该程序,实现整幅图图层的批量转换。想方便的话,也可新建命令按钮,在“关联的宏”的的语言框中输入“(load “d:/lisp程序/bc.lsp”)bc”应用这个程序,这里指的是bc.lsp的程序文件是放在d盘根目录下的lisp程序的文件夹下。如果是放在自定义的别的目录下,只要将目录名更正一下即可。试试看,批量改图层的程序,你也掌握了。

本讲掌握要点:掌握图层转换程序的编写。

下一讲:AutoLISP在测绘中的应用讲座3的第1讲实现图层批量转换的范例


[size=4] 2 选择集的应用

在学习选择集之前,我们要了解组码是什么。我们在AutoCAD命令行敲入函数(entget (car (entsel)))然后选择图形中的一个实体回车,然后按F2键,会出现如下的一些数据:

((-1 . <图元名: 7efacd58>) (0 . "LWPOLYLINE") (330 . <图元名: 7efacc10>) (5 . "2B") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "DLSS") (6 . "X2") (370 . 0) (100 . "AcDbPolyline") (90 . 2) (70 . 128) (43 . 0.4) (38 . 0.0) (39 . 0.0) (10 491000.0 4.63675e+006) (40 . 0.4) (41 . 0.4) (42 . 0.0) (10 490991.0 4.63675e+006) (40 . 0.4) (41 . 0.4) (42 . 0.0) (210 0.0 0.0 1.0))。什么是组码,上面数据的括号中打头的那个数字就是组码,知道这个很重要,否则我们不知道 该如何写选择集中的语句。下面是一个选择集。

(setq ss (ssget "x" (list (cons 8 "dlss"))))

我们可以打开一个有dlss层实体的图形,找到相关实体,然后在命令行上粘上这个函数语句回车执行,然后在命令行上敲上命令erase回车后,再在命令行上输入p会车,你会发现erase命令对刚才得选择集进行了处理,处理的结果是删没了。我们看以看出,这个选择集的功能很类似于AutoCAD中的过滤命令filter,但是AutoLISP中的选择集在程序中应用就使得这一功能强大了不知道有多少。上述选择集中,很显然能看出,8是层的组码,最开始就把它理解成固定使用。也不需要记,用到得时候查在命令行上查一下即可。这个语句还涉及到几个函数,setq函数,ssget函数,list函数,cons函数,下面列举它们的功用。

1 setq函数

setq函数用于给变量赋值,其格式如下:

(setq name value [name value]。。。)

其中,name为变量名;value为赋予变量的值。

2 ssget “x”函数

ssget函数允许用户选择图形中任意对象。该函数的格式为:

(ssget [selection-mode][point1][point2]),其中selection-mode为对象选择模式(W、C、L、P等);point1为窗口的第一个点;point2为窗口的第二个点。示例:

(ssget “ x”);允许用户在整个图形数据库中选择指定类型的对象,即使图层被冻结或关闭。Ssget “x”函数的格式为:

(ssget “x” specified-criteria);其中X为ssget函数的过滤模式;specified-criteria为选择对象的指定规则列表。

3 list函数

list函数用于定义一个二维或三维点。若表达式中不包含任何变量及未定义项,则该函数还可以使用单引号(’)命名。示例:(setq x (list 2.5 3.56)),返回结果为:2.5,3.56。

4 cons函数

cons函数依据给定的元素或列表构造一个新的列表。Cons函数格式为:

(cons first-element second-element);其中,first-element为第一个元素或列表;second-element为第二个元素或列表。示例:(cons “x” “y”),返回(“x” “y”)。

对于选择集的应用,这里再枚举几个例子,以供参考。

(setq ss (ssget "x" (list (cons 8 "2110")(cons 0 "LWPOLYLINE"))))全图选择2110层的LWPOLYLINE线;

(setq ss (ssget "x" (list (cons 0 "TEXT")(cons 8 "8310"))))全图选择8310层的文本;

(setq ss (ssget "x" (list (cons 0 "insert")(cons 8 "8310"))))全图选择8310层中的实体块;

(setq ss (ssget "x" (list (cons 8 "dgx")(cons 40 0.3))))全图选择dgx层宽度为0.3的实体;

本讲掌握要点:学会使用选择集语句。

下一讲:AutoLISP在测绘中的应用讲座2的第3讲实现图层批量转换的范例

(原创作品,未经允许不得转载)


[/size]
此日志由 motu 在 2010-11-12 7:32:00 编缉过。

分类:漠土测绘科技 | 部落: | 评论:24 | 引用通告 | 阅读次数(5724)

Tags:无

回复:贝尔实验室发明无透镜相机 匿名网友 于 2018-6-27 15:33:26 发表评论 [引用]

20180627lck
http://www.ysloutlet.us.com
http://www.michaelkorsoutletny.us.com
http://www.hermesoutletstore.us.com
http://www.pandoracharmsofficial.us.com
http://www.ralphlaurenpolo-outlet.us.com
http://www.adidas-wings.in.net
http://www.oakleysunglasseswholesalez.us.com
http://www.linksoflondon.org.uk
http://www.coachoutletclearance.us.com
http://www.coachoutlet-canada.ca
http://www.truereligion-jeansoutlet.us.com
http://www.kobe9elites.us.com
http://www.swarovskisoutlet.us.com
http://www.canadagoose-outletstore.name
http://www.ferragamo.us.org
http://www.nhljerseysstore.us.com
http://www.christianlouboutinoutletorg.us.com
http://www.truereligionjeansoutletsale.us.com
http://www.pandoracharmsclearancesale.org.uk
http://www.dolce-gabbana.us.com
http://www.katespadeoutletofficials.us.com
http://www.yeezyboostoutlet.us.com
http://www.kobeshoes.us
http://www.barbourjackets.us.org
http://www.soccer-shoes.us
http://www.uggoutletusa.us.com
http://www.minnetonkas.us.com
http://www.macmakeup.us.org
http://www.coachoutletonline-clearance.us.com
http://www.michaelkorshandbags-outlets.us.com
http://www.nikestore-uk.org.uk
http://www.coachfactoryoutlet-sale.us.com
http://www.canadagoose--outlet.ca
http://www.uggsoutletugg.com.co
http://www.airjordanreleasedates.us.com
http://www.dansko-shoes.us.com
http://www.michaelkorsoutletca.us.com
http://www.moncler.us.com
http://www.abathingape.us.com
http://www.chicago-blackhawks.us.com
http://www.coachoutletcoupons.us.com
http://www.air-max90.co.uk
http://www.converseshoes.us.com
http://www.oakleysunglasseswholesaleus.us.com
http://bulls.nbajerseysstore.us.com
http://www.yeezyboost350sale.us.com
http://www.brequetwathes.us
http://www.coach-handbags.us.com
http://www.canadagooseoutletss.us.com
http://www.keen.us.com
http://www.kevindurant.us
http://www.michaelkorsoutleok.us.com
http://www.michaelkorsoutletok.us.com
http://www.katespadeoutletstores.us
http://www.airjordanretro.com.co
http://www.longchamphandbagssale.us.com
http://www.uggsboots.ca
http://www.pandoracharms-saleclearance.me.uk
http://www.airjordanshoes.us.org
http://www.toms.us.com
http://www.ray-banssunglassesoutlet.us.com
http://www.worldcupjerseys.us.com
http://www.michaelkorsoutletcheap.us.com
http://www.fitflopssaleclearance.in.net
http://www.nikeairmax2017.us.org
http://www.poloralphlaurenwholesale.us.com
http://www.jordanshoesfactory.us.com
http://www.yeezyboost.us.org
http://www.jacketscanadagoose.ca
http://www.barcelonajersey.us
http://www.stephencurryshoess.us.com
http://www.nikeshoesfree.us.com
http://www.isabelmarant.us.org
http://www.coachoutletonline.us.org
http://www.michaelkorsoutletnew.us.com
http://www.fitflopsoutletsale.com
http://www.jordan-shoes.us.com
http://www.golden-goose.us.org
http://www.airmax90uk.me.uk
http://www.denverbroncosjerseys.org
http://www.foampositeshoe.net
http://www.swarovskioutletstore.us.com
http://www.true-religionjeanssale.us.com
http://www.cheapnba-jerseys.us.com
http://www.y3shoes.org
http://www.cheapjordansshoe.us.com
http://www.burberryoutletinc.us.com
http://www.coachoutletofficialonline.us.com
http://www.raybansunglassesoutlets.com.co
http://www.michaelkorsoutletonline-stores.us.com
http://www.guccioutletstores.us.com
http://www.swarovskisale.org.uk
http://www.coachfactoryoutletcoachoutlet.us.com
http://www.stussy.us.org
http://www.michaelkorsoutlets.me.uk
http://www.manchesterunitedjersey.us
http://w

回复:AutoLISP在测绘中的应用讲座2(3) 匿名网友 于 2018-5-31 16:46:49 发表评论 [引用]

<H1><a href="http://www.fentypuma.us.com" title="fenty puma"><strong>fenty puma</strong></a></H1>
<H1><a href="http://www.yeezysuk.com" title="yeezy"><strong>yeezy</strong></a></H1>
<H1><a href="http://www.oakleysunglassessale.us" title="oakleys sunglasses"><strong>oakleys sunglasses</strong></a></H1>
<H1><a href="http://www.monclerjacketsoutlets.us.com" title="moncler jackets"><strong>moncler jackets</strong></a></H1>
<H1><a href="http://www.vans-outlet.us.com" title="vans outlet"><strong>vans outlet</strong></a></H1>
<H1><a href="http://www.truereligion-outlets.us.com" title="true religion outlet"><strong>true religion outlet</strong></a></H1>
<H1><a href="http://www.hermesbelts.co.uk" title="hermes belts"><strong>hermes belts</strong></a></H1>
<H1><a href="http://www.longchamp-bag.us.com" title="longchamp"><strong>longchamp</strong></a></H1>
<H1><a href="http://www.nhljerseys.us.org" title="cheap nhl jerseys"><strong>cheap nhl jerseys</strong></a></H1>
<H1><a href="http://www.fitflops-saleclearance.us.com" title="fitflops sale clearance"><strong>fitflops sale clearance</strong></a></H1>
<H1><a href="http://www.kevindurant-shoes.us.com" title="kd shoes"><strong>kd shoes</strong></a></H1>
<H1><a href="http://www.raybanaviatorsunglasses.org" title="ray ban aviator sunglasses"><strong>ray ban aviator sunglasses</strong></a></H1>
<H1><a href="http://www.nikeairmax2018.us.com" title="nike air max"><strong>nike air max</strong></a></H1>
<H1><a href="http://www.kyrie4shoes.us.com" title="kyrie 4"><strong>kyrie 4</strong></a></H1>
<H1><a href="http://www.adidas-tubular.us.com" title="adidas tubular"><strong>adidas tubular</strong></a></H1>
<H1><a href="http://www.burberryoutlet-store.us.com" title="burberry outlet"><strong>burberry outlet</strong></a></H1>
<H1><a href="http://www.adidasstore.us.com" title="adidas store"><strong>adidas store</strong></a></H1>
<H1><a href="http://www.derrickroseshoes.us.com" title="d rose shoes"><strong>d rose shoes</strong></a></H1>
<H1><a href="http://www.katespadehandbags-outlet.us.com" title="kate spade outlet"><strong>kate spade outlet</strong></a></H1>
<H1><a href="http://www.yeezyboost350v2shoes.us.com" title="yeezy boost 350 v2"><strong>yeezy boost 350 v2</strong></a></H1>
<H1><a href="http://www.adidas-zxflux.us.com" title="adidas flux"><strong>adidas flux</strong></a></H1>
<H1><a href="http://www.nikeshoesformen.us.com" title="nike shoes for men"><strong>nike shoes for men</strong></a></H1>
<H1><a href="http://www.monclerjacketsale.us" title="moncler jackets"><strong>moncler jackets</strong></a></H1>
<H1><a href="http://www.outletlacoste.us.com" title="lacoste outlet"><strong>lacoste outlet</strong></a></H1>
<H1><a href="http://www.curry4shoes.us.com" title="curry 4"><strong>curry 4</strong></a></H1>
<H1><a href="http://www.balenciaga.us.com" title="balenciaga speed"><strong>balenciaga speed</strong></a></H1>
<H1><a href="http://www.kobebasketballshoes.us.com" title="basketball shoes"><strong>basketball shoes</strong></a></H1>
<H1><a href="http://www.nike-hyperdunk.us.com" title="nike hyperdunk"><strong>nike hyperdunk</strong></a></H1>
<H1><a href="http://www.truereligion-outlets.us.com" title="true religion jeans"><strong>true religion jeans</strong></a></H1>
<H1><a href="http://www.asicsgelkayano.us.com" title="asics gel kayano"><strong>asics gel kayano</strong></a></H1>
<H1><a href="http://www.nikeflyknitracer.us.com" title="nike flyknit"><strong>nike flyknit</strong><

总有记录:23条,共3页 总有记录:23条,共3页 1 2 3 总有记录:23条,共3页 总有记录:23条,共3页,点这里转到尾页

用 户: 密 码:
验 证: 不不清或没看到请点这里!
标 题:

内 容:

[加粗] [下划线] [居中] [网址] [图片] [代码] [UBB表情]

导航

归档

日历

我的简历

  • 姓名:motu
  • 性别:1
  • 注册日期:
  • Email:zdh1977@126.com
  • 城市:北京
  • 发消息给我

公告

本博客的文字和图片均为作者原创,如有转载,请注明作者和出处,欢迎光临!

部落

最新回复

联接

统计

  • 访问人数: 人
  • 创建时间:2008-9-14
  • 发表文章:239 篇
  • 上传相片:9 张
  • 回复总数:969 篇
  • 阅读总数:1020963 次