乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 139|回复: 7

[求助]植被填充好程序,明总能不能翻译成C#或VB版本??

[复制链接]

4

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
27
发表于 2012-3-13 21:28:00 | 显示全部楼层 |阅读模式
在CAD二次开发应该会经常遇到(闭合)Polyline的填充问题,在论坛里没有找到类似的例子??由于是填充自定义的各种符号(如自定义块参照),使用Hatch命令未能实现或达到效果,偶然发现下面这个植被填充程序,可惜是Lisp版本,很难看懂,能不能麻烦各位明总和高手们抽时间帮忙翻译成VB或C#版本(最好是最新的.Net API版本),选择新的开发方式缺乏这样好的资源做参考。
// 问题定义:植被填充
// 转载自:http://www.objectarx.net/forum.php?mod=viewthread&tid=8985
// 理想效果:

s1w4mjhjozc.png

s1w4mjhjozc.png


// Lisp版本如下:
选择多段线,重量线  如果是轻量线可以用convertpoly 命令来转换
(DEFUN C:ZB()
   (setq os (getvar "osmode"))   ;获取系统当前点捕捉模式
   (setvar "osmode" 0)           ;取消点捕捉
   (command "linetype" "s" "continuous" "")   ;设置线型
   (command "layer" "m" "ZB" "s" "ZB" "")     ;设置图层
   (setq sn (entsel "\n选择要填充植被符号的Polyline封闭线:"))
   (setq sn (car sn))
   (setq s1 sn)
   (setq pname (getstring "\n输入植被符号图块名称:"))
   (Point_Pline)          ;获取Polyline线顶点坐标
;计算多边形外接最大矩形----------------------开始
   (setq n (length b) n0 0)
   (while ( x x2) (setq x2 x))
                  (if (> y y2) (setq y2 y))
           )
       )
   )
;计算多边形外接最大矩形----------------------结束
  (setq s_long 0);判断插入1个符号或多个符号的标志(0一个/1多个)
  (if (and (> (- x2 x1) 5)(> (- y2 y1) 5))  
      (progn
         ;当外接矩形长、宽都大于5mm时,计算并填充植被符号
         (setq p1 '(0 0) p2 p1)
         (while ( s2 (* rowd rowd))
             (progn
              ;如果填充多边形面积s2>100,计算植被符号插入位置
                (setq s_long 1)
              ;绘填充多边形内或外的平行多边形
                (command "offset" "0.4" S1 poin "")
                (setq sn (entlast))
                (command "area" "E" sn)  ;计算平行多边形的面积
                (setq s3 (getvar "area"))  ;s3=平行多边形的面积
                (entdel sn)         ;删除平行多边形的面积
                (if (> s3 s2)
                    (command "OFFSET" "2" s1
                                      (polar p (+ a1 pi) 0.1)
                              ""
                    )
                    (command "OFFSET" "2" S1 poin "")
                ) ;确认填充多边形的内多边形并绘制
                (setq sn (entlast))
                (Point_Pline)  ;取得内多边形顶点坐标表B
                (entdel sn)  ;删除内多边形
            );progn
         );if s2
       )
    )
    (if (= s_long 0)
        ;只绘一个符号
        (COMMAND "INSERT" pname
                          (list (* 0.5 (+ x1 x2)) (* 0.5 (+ y1 y2)))
                          1 1 ""
        )
       (progn
        ;绘多个符号
        ;计算内多边形外接最大矩形----------------------开始
        (setq n (length b))
        (setq n0 0)
        (while ( x x2) (setq x2 x))
                          (if (> y y2) (setq y2 y))
                   )
               );if
        )  ;while
        ;计算内多边形外接最大矩形----------------------结束
        ;计算符号插入点并插入符号----------------------开始
        (SETQ  L (- X2 X1) W (- Y2 Y1))
        (SETQ COLD (/ ROWD 2.0) DY 0.0 NUM 1)
        (setq n (- n 1))
        (setq p '(-1000000 -100000)) ;在填充区域外设定一点
        (WHILE ( (distance b0  b1) 0.004)
                             (setq bb (cons b1 bb))
                         )
                         (setq b0 b1)
                         (setq nb0 (+ nb0 1))
        )
        (setq b (reverse bb))
);END

euzifzs2snz.png

euzifzs2snz.png

该贴已经同步到
回复

使用道具 举报

4

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
27
发表于 2012-3-16 11:02:00 | 显示全部楼层
都没人顶啊,高手麻烦指导一下,自己顶一下吧
回复

使用道具 举报

1

主题

11

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2012-3-19 08:58:00 | 显示全部楼层
哈哈,我给你顶一下,好像也有个类似vba的。。记不清了
回复

使用道具 举报

9

主题

100

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2012-3-20 12:55:00 | 显示全部楼层
应该是跟EXPPRESS中的SupperHatch命令一样的吧?但这个应该没SupperHatch命令强
原理好像是这样:
1求出要填充多边形的外接矩形
2计算要填充的块的外接矩形
3然后就是矩阵排列了
最后的边界部分怎么处理不清楚
回复

使用道具 举报

4

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
27
发表于 2012-3-21 17:43:00 | 显示全部楼层

从Lisp版本的来看,应该是你这个思路,可是试了好久,没转过来,请问有没有类似的程序啊,VB或者C#的
回复

使用道具 举报

4

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
27
发表于 2012-3-21 17:45:00 | 显示全部楼层

对不起,好像回复错位了,没有用过你说的这个命令,能具体说说吗
回复

使用道具 举报

4

主题

11

帖子

1

银币

初来乍到

Rank: 1

铜币
27
发表于 2012-3-21 17:46:00 | 显示全部楼层

从Lisp版本的来看,应该是你这个思路,可是试了好久,没转过来,请问有没有类似的程序啊,VB或者C#的
回复

使用道具 举报

3

主题

44

帖子

9

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
59
发表于 2015-9-2 19:27:00 | 显示全部楼层
测量填充植被符号有用
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 11:15 , Processed in 0.724482 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表