明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: lihongyu2467

[求助]编一个测量中绘制围墙的程序

  [复制链接]
发表于 2003-8-5 08:59:00 | 显示全部楼层
你想想看,如果是一个封闭的墙,内墙的周长和外墙的周长是不同的,如果你给出一个周长(用鼠标点取也一样),那这个周长是内墙的长还是外墙的长?
 楼主| 发表于 2003-8-6 09:17:00 | 显示全部楼层
其实测绘中的围墙不是这样复杂,也没有内墙和外墙之分,在成序中只用Pline线画出即可,只是要每隔10m进行等分,可我不会作。
发表于 2003-8-6 10:07:00 | 显示全部楼层
怎么说你才明白?看图,如果给出整个周长为100,就有三种可能

同样给出的周长是100,却有三种可能,你让我画哪个呢?

本帖子中包含更多资源

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

x
 楼主| 发表于 2003-8-6 12:29:00 | 显示全部楼层
不好意思,有些专业上的问题实在是很难沟通。测绘中画围墙时只有前进方向的左侧或右侧之分,我看就是上图中的外墙吧。打扰了这么久,很是不好意思。
发表于 2003-8-6 14:55:00 | 显示全部楼层
看看行不行:
  1. (defun c:Draw2( / pt
  2.                  pt2
  3.               i
  4.               j
  5.               n
  6.               Le        ;剩余长度
  7.               Long        ;每段长度
  8.               Ang        ;每段角度
  9.               Ang_W        ;分割线角度
  10.               pt_W       
  11.               pt_Ws       
  12.               pt_O
  13.               pt_N
  14.               pt_WE
  15.                os
  16.               )
  17.   (setvar "cmdecho" 0)
  18.   (setq pt (getpoint "\n输入起点:"))
  19.   (setq pt_N pt)
  20.   (setq pt_O pt)
  21.   (setq Le 0)
  22.   (command "_.pline" pt_O)
  23.   (while (setq pt_N (getpoint pt_N "\n输入下一点:"))
  24.     (command pt_N)
  25.     (setq Long (+ Le (distance pt_N pt_O)))
  26.     (setq Ang (angle pt_O pt_N))
  27.     (setq Ang_W (- Ang (/ pi 2)))
  28.     (setq n (fix (/ Long 10)))
  29.     (setq pt_W (polar pt_O Ang (- 10 Le)))
  30.     (setq pt_WE (polar pt_W Ang_W 0.5))
  31.     (setq pt_Ws (append pt_Ws (list (list pt_W pt_WE))))
  32.     (setq Le (- Long (* n 10)))
  33.     (setq j 1)
  34.     (while (< j n)
  35.       (setq pt_W (polar pt_W Ang 10))
  36.       (setq pt_WE (polar pt_W Ang_W 0.5))
  37.       ;(command "_.pline" pt_W pt_WE "")
  38.       (setq pt_Ws (append pt_Ws (list (list pt_W pt_WE))))
  39.       (setq j (1+ j))
  40.     )
  41.     (setq pt_O pt_N)
  42.   )
  43.   (command "")
  44.   (setq os (getvar "osmode"))
  45.   (setvar "osmode" 0)
  46.   (setq ent (entlast))
  47.   (command "_.offset" 0.5 ent pt_WE "")
  48.   (mapcar '(lambda(lst) (command "_.pline" (car lst) (cadr lst) "")) pt_Ws)
  49.   (setvar "osmode" os)
  50.   (princ)
  51. )
  52.    
 楼主| 发表于 2003-8-6 17:44:00 | 显示全部楼层
多谢,我回去试试。
 楼主| 发表于 2003-8-6 21:41:00 | 显示全部楼层
非常好,就是这样。可是目前如果将画出的围墙拟合会产生混乱,是否可以画出的围墙做成一个整体,以便拟合呢?
实在不好意思再打扰你了,如果简单,就解决一下。再次感谢。
发表于 2003-8-6 22:11:00 | 显示全部楼层
你可以用制作线形的办法试试(先制作形,再制作线形),这样就不需要编程了,在实际使用过程中你只需调整线形比例即可
 楼主| 发表于 2003-8-7 11:03:00 | 显示全部楼层
这种办法我试过,采用制作线形的办法在转点处不好,精度不高。
 楼主| 发表于 2003-8-7 11:04:00 | 显示全部楼层
这种办法我试过,采用制作线形的办法在转点处不好,精度不高。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-4 19:51 , Processed in 0.175498 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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