明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4907|回复: 14

请斑竹帮忙。绘制新图式围墙的程序

  [复制链接]
发表于 2010-11-24 13:15:00 | 显示全部楼层 |阅读模式
绘制新图式围墙的程序能否发一个啊
发表于 2010-11-25 07:14:00 | 显示全部楼层
yx1985321发表于2010-11-24 13:15:00绘制新图式围墙的程序能否发一个啊 站内搜索更多有关 的信息

 

 

 

 

 

新图式围墙有两种

采用有关测绘软件就可以了,很方便

网络上有下载

 楼主| 发表于 2010-11-25 17:55:00 | 显示全部楼层
老大帮帮忙啊。找不到呀。急啊
发表于 2010-11-26 07:24:00 | 显示全部楼层

下载南方cass200以上版本都行

 楼主| 发表于 2010-12-1 20:09:47 | 显示全部楼层
现在变成了新图式了。没有办法绘制出来啊

点评

我是用不依比例的加画。 新图式是0.6了 程序不好判别去掉哪一根  发表于 2010-12-2 09:50
发表于 2010-12-4 16:21:50 | 显示全部楼层
本帖最后由 461045462 于 2010-12-4 16:25 编辑

有一个修改围墙短线为2007版格式的,不知你能否使用?
因为有些画围墙的方式不一样。你试试吧。
命令:gwq







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-4-11 14:01:20 | 显示全部楼层
haoyong

发表于 2011-4-11 14:01:54 | 显示全部楼层
在04 内可以吗
发表于 2011-4-11 15:04:33 | 显示全部楼层
本帖最后由 mandala 于 2011-4-11 15:10 编辑

新图式的围墙有几种做法,一种是画线、插块的,一种是用线型的。前一种方法的缺点是删除比较麻烦,还得选中一个个块删除,另外很多这类程序存在围墙转弯时,块有时候会伸出在墙外的情况,当然花些功夫这个问题还是能够解决的。用线型的缺点是前期得做线型,但有了线型之后就一劳永逸了。


发一个我自己写的lsp吧,是用线型的,1比500比例下,单位为米。你可以参考一下思路。不过你得先做一个新围墙的线型wq2012,和一个符号间隔为一半的线型wq2012b,如图:。


  1. (defun c:wq (/ *error* lay ltp E2 en enl a E3 ss n ssn vss len el ent1)

  2.   (prompt "绘制07版按比例围墙,符号在前进方向左侧。")
  3.   (print)
  4.   (defun *error* (msg)
  5.     (prompt "程序出错!返回到起始状态。")
  6.     (setvar "CMDECHO" 0)
  7.     (command "._undo" "_e")
  8.     ;;设置undo结束点
  9.     (command "._u")
  10.     (princ)
  11.   ) ;_ 结束defun
  12.   ;;把*error*函数放在主程序里边作为内部定义

  13.   (setvar "CMDECHO" 0)
  14.   (command "._undo" "_be")
  15.   ;;建立undo点
  16.   (setq lay (getvar "clayer"))
  17.   (setq ltp (getvar "celtype"))
  18. ; (setvar "clayer" "wall")
  19.   (setvar "celtype" "wq2012")
  20.   (setvar "plinewid" 0)
  21.   (setvar "plinegen" 1)
  22.   (setvar "CMDECHO" 1)
  23.   (if (= (setq th (getreal "输入墙厚度:(默认为0.5):")) nil)
  24.     (setq th 0.5)
  25.   ) ;_ 结束if
  26.   (command "._PLINE")
  27.   (while (> (getvar "cmdactive") 0) (command pause))
  28.   (setvar "CMDECHO" 0)
  29.   (setq E2 (entlast))
  30.   (setq en (entlast))
  31.   (setq enl (entget en))
  32.   (setq enl (vl-remove-if '(lambda (x) (/= 42 (car x))) enl))
  33.   (setq a (vlax-ename->vla-object (entlast)))
  34.   (vla-offset a (- th))
  35.   (setq E3 (entlast))
  36.   (if (eq E3 (entnext E2))
  37.     ;;判断是否只生成一个对象
  38.     (progn
  39.       (command "_.LINE"
  40.          "_NON"
  41.          (vlax-curve-getStartPoint E2)
  42.          "_NON"
  43.          (vlax-curve-getStartPoint E3)
  44.          ""
  45.       ) ;_ 结束command
  46.       (command "_.LINE"
  47.          "_NON"
  48.          (vlax-curve-getEndPoint E2)
  49.          "_NON"
  50.          (vlax-curve-getEndPoint E3)
  51.          ""
  52.       ) ;_ 结束command
  53.       (command "chprop" E3 "" "lt" "continuous" "")
  54.       (command "_.explode" e2)
  55.       (setq ss (SSGET "P")
  56.       n  0
  57.       ) ;_ 结束setq
  58.       (repeat (sslength ss)
  59.   (setq ssn (ssname ss n))
  60.   (setq vss (vlax-ename->vla-object ssn))
  61.   (setq len (vlax-curve-getDistAtPoint
  62.         vss
  63.         (vlax-curve-getEndPoint vss)
  64.       ) ;_ 结束vlax-curve-getDistAtPoint
  65.   ) ;_ 结束setq
  66.   (setq el (entget ssn))
  67.   (if (and (< len 10) (> len 4.5))
  68.     (if (< (cdr (nth n enl)) 0)
  69.       (progn
  70.         (setq el (subst (cons 6 "WQ2012b") (assoc 6 el) el))
  71.         (entmod el)
  72.         (command "pedit" ssn "y" "")
  73.         (setq ent1 (entlast))
  74.         (reverseLwp ent1)
  75.       ) ;_ 结束progn
  76.       (progn
  77.         (setq el (subst (cons 6 "WQ2012b") (assoc 6 el) el))
  78.         (entmod el)
  79.       ) ;_ 结束progn
  80.     ) ;_ 结束if
  81.     (if (< (cdr (nth n enl)) 0)
  82.       (progn
  83.         (command "pedit" ssn "y" "")
  84.         (setq ent1 (entlast))
  85.         (reverseLwp ent1)
  86.       ) ;_ 结束progn
  87.     ) ;_ 结束if
  88.   ) ;_ 结束if
  89.   (setq n (1+ n))
  90.       ) ;_ 结束repeat
  91.     ) ;_ 结束progn
  92.     (progn
  93.       (princ "绘制失败。同一条围墙请勿交叉!!!! ")
  94.       (setq E3 E2)
  95.       (while (setq E2 (entnext E2))
  96.   (entdel E2)
  97.       ) ;_ 结束while
  98.       (entdel E3)
  99.     ) ;_ 结束progn
  100.   ) ;_ 结束if
  101.   (setvar "clayer" lay)
  102.   (setvar "celtype" ltp)
  103.   (command "._undo" "_e")
  104.   ;;设置undo结束点
  105.   (princ)
  106. ) ;_ 结束defun

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-5-16 12:14:08 | 显示全部楼层
  线形怎么做的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 09:26 , Processed in 0.192241 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表