njcknfy 发表于 2005-3-21 20:32:00

文字消隐不能使用是因为你的CAD没有安装EXpress工具集,CADR14的版本和CADR2000的版本在安装时只要选择完全安装,一般EXpress的工具集都被安装,自CADR2002开始,这个工具要另外安装,你可到明经通道的网上下载,我在前一段时间在论坛里贴的多义线自动精简结点的LISP程序就可以实现和等值线滤波同样的功能,只是运行的速度不如CASS中的快,凑合着也能用。

xgr 发表于 2005-3-23 14:40:00

朋友:你的情况可用另一方法:展点完后,利用CASS的“实体添加属性”命令给实体“GC200”加上属性,编码是“202101”,即可利用所展点生成TIN网。我也是搞测绘的,展点程序是自己编写的,其中的块“GC200”也没有添加实体属性,我是用这一方法来实现TIN网的生成。

njcknfy 发表于 2005-3-23 18:46:00

我试了一下,利用给实体添加扩展属性的命令确实可以给GC200的块添加202101的扩展属性,就可以建三角网了。

xgr 发表于 2005-3-28 16:51:00

你的这个程序我下载试用了,其中好象没有考虑到坐标系的问题,如果图形是自定义坐标系的话,精减后的等高线会位移,另外,如果能够提高精减速度的话,将是一个很好的程序,是否能把其中的COMMAND用ENTMAKE涵数代替,这样也许速度要更快一些。仅供参考。


另外,本人还有一事相求,CASS的等高线的自动生成,如果选择用二次拟和线,则生成的等高线不经过高程点。不知有什么方法解决。

0-baby 发表于 2005-3-31 12:00:00

楼主好强哦。。佩服。。收益较多。。

xgr 发表于 2005-4-3 15:48:00

批量展点程序,运行于CASS5.1,可以利用展的点,用CASS中的命令生成等高线。先建一文本,格式为


X       Y         Z


点号 X       Y Z


保存为.TXT,运行程序提示选择数据时,选择该文本即可。


代码如下:





defun dstbm       ()<BR>       (setq mm (entlast))<BR>       (setq pb (entget mm))<BR>       (regapp "SOUTH")<BR>       (setq<BR>                       xb<BR>                               (append<BR>                                               pb<BR>                                               (list<BR>       (list '-3<BR>                                                       (list "SOUTH" (cons 1000 stbmx))<BR>                                                       )<BR>       )<BR>                                               )<BR>                       )<BR>       (entmod xb)<BR>       (princ)<BR>       )


;;;批量展测量点<BR>(defun c:zdtxt        (/ l wzcl wzch l3 oldcmd oldblip oldsnap tckz newlayer fle fn pt dm zb xyz h lscale xyz1 xyz2)<BR>       (setq l (getvar "ltscale"))<BR>       (setq wzcl (* l 2))<BR>       (setq wzch (* l 2))<BR>       (setq        l3 (angle (getvar "ucsorg")<BR>                       (getvar "ucsxdir")<BR>                       )<BR>        )<BR>       (setq oldcmd (getvar "cmdecho"))<BR>       (setvar "cmdecho" 0)<BR>       (setq oldblip (getvar "blipmode"))<BR>       (setvar "blipmode" 0)<BR>       (setq oldsnap (getvar "osmode"))<BR>       (setvar "osmode" 0)<BR>       (setvar "angdir" 1)<BR>       (setq        fle (getfiled "请选择数据文件"<BR>                                                       "*"<BR>                                                       "txt;dat;*"<BR>                                                       2<BR>                                                       )<BR>        )<BR>       (if (= (tblobjname "layer" "GCD") nil)<BR>                                               (progn<BR>       (command "layer" "n" "zd" "C" "1" "GCD"        "")<BR>                                               )<BR>                               )<BR>       (setq fn (open fle "r"))<BR>       (read-line fn)<BR>       (setq n 0)<BR>       (while (setq pt (read-line fn))<BR>                       (setq dm (vl-princ-to-string (read pt)))<BR>                       (setq zb (substr pt (+ (strlen dm) 1)))<BR>                       (setq<BR>                                       xyz (trans (read (strcat "(" zb ")"))<BR>               1<BR>               0<BR>               )<BR>                                       )<BR>                       (setq h (rtos (last xyz) 2 1))<BR>                       (setq lscale (* l 1))<BR>                       (entmake<BR>                                       (list (cons 0 "INSERT")<BR>                               (cons 100 "AcDbEntity")<BR>                               (cons 8 "GCD")<BR>                               (cons 100 "AcDbBlockReference")<BR>                               (cons 10 xyz)<BR>                               (cons 41 lscale)<BR>                               (cons 42 lscale)<BR>                               (cons 43 lscale)<BR>                               (cons 410 "model")<BR>                               (cons 2 "gc200")<BR>                               )<BR>                                       ) ;"gc200"为块名<BR>                       (setq stbmx (itoa 202101))<BR>                       (dstbm)<BR>                       (setq xyz1<BR>                       (polar xyz (/ pi 2) (* l 2))<BR>               )<BR>                       (setq xyz2<BR>                       (polar xyz (* (/ pi 2) 3) (* l 2))<BR>               )<BR>                       (entmake (list (cons 0 "Text")<BR>                               (cons 100 "AcDbEntity")<BR>                               (cons 8 "GCD")<BR>                               (cons 100 "AcDbText")<BR>                               (cons 7 "standard")<BR>                               (cons 1 dm)<BR>                               (cons 40 wzcl)<BR>                               (cons 41 0.8)<BR>                               (cons 410 "model")<BR>                               (cons 71 0)<BR>                               (cons 72 4)<BR>                               (cons 73 0)<BR>                               (cons 10 xyz1)<BR>                               (cons 11 xyz1)<BR>                               )<BR>                                       )<BR>                       (setq stbmx (itoa 202111))<BR>                       (dstbm)<BR>                       (entmake (list (cons 0 "Text")<BR>                               (cons 100 "AcDbEntity")<BR>                               (cons 8 "GCD")<BR>                               (cons 100 "AcDbText")<BR>                               (cons 7 "hz")<BR>                               (cons 1 h)<BR>                               (cons 40 wzch)<BR>                               (cons 41 0.8)<BR>                               (cons 410 "model")<BR>                               (cons 71 0)<BR>                               (cons 72 4)<BR>                               (cons 73 0)<BR>                               (cons 10 xyz2)<BR>                               (cons 11 xyz2)<BR>                               )<BR>                                       )<BR>                       (setq stbmx (itoa 202111))<BR>                       (dstbm)<BR>                       (setq n (+ n 1))<BR>                       )<BR>       (if (= pt nil)<BR>                       (progn<BR>                                       (alert (strcat "*--*展点结束,共展"<BR>                                               (itoa n)<BR>                                               "个点*--*!。"<BR>                                               )<BR>                                       )<BR>                                       (setvar "cmdecho" oldcmd)<BR>                                       (setvar "blipmode" oldblip)<BR>                                       (setvar "osmode" oldsnap)<BR>                                       (setvar "angdir" 1)<BR>                                       (setvar "clayer" "0")<BR>                                       )<BR>                       )<BR>       (close fn)<BR>       (command "zoom" "E")<BR>       (princ)<BR>       )

njcknfy 发表于 2005-4-14 19:11:00

试了一下,使用entmake的方法,运行的速度确实提高了不少,其实扩展数据项也可以一起写到实体里去,我试过了

njcknfy 发表于 2005-4-17 22:20:00




发一个地下管线探查数据录入的Access数据库模板供大家参考,希望对大家有帮助,谢谢!

LONGXIN 发表于 2005-4-21 14:04:00

楼主有没在CAD下用VBA开发access数据库的示例,比如把所有控制点的成表放在一个图幅里,可以用数据库存管理。当在cad下移动一个控制点的位置后其在数据库中的坐标值可以连动更改。

njcknfy 发表于 2005-4-23 21:11:00

我比较喜欢用文本文件作为中间交换的文件,让LISP把文本文件导入到CAD中建一个表,只要点号没有重复,操作起来也很方便,修改完的文本文件再导回到数据库中,方法比较简单,对VB水平不太高的人很适用
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: 自己动手,改进CASS中欠缺的功能