明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3599|回复: 14

如何提取多义线中某一线段的长度?

  [复制链接]
发表于 2004-3-11 08:05:00 | 显示全部楼层 |阅读模式
再不分解多义线的情况下,如何提取多义线中某一线段的长度?
发表于 2005-7-28 11:14:00 | 显示全部楼层

是啊,我也需要这样的程序,能提取其中自己所需分段的长度,不知各位老师有没有编出来。

其他论坛上看到有类似的,但不完善,不好操作。

 

 

发表于 2005-7-28 20:11:00 | 显示全部楼层

功能:标注坡度坡长

命令:PDPC

本帖子中包含更多资源

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

x
发表于 2005-7-30 09:30:00 | 显示全部楼层

谢谢版主的积极回应。

但你提供的程序只能捕捉两夹点之间的长度,而我需要的线段它包括许多的夹点,其中还有圆弧。我在实际操作中是先用线条与多段线相交标记成若干需要的线段,再交点打断,查看属性获得每分隔段的长度。不用说,这是最笨的方法,费时费力,容易出错,

所以我希望的程序是直接选取多段线和相交直线,然后批量得到各分段之间的长度,或者通过拾取两交点获得长度,最后的数据可以标注在线段旁或通过文本输出。

嘿嘿,是不是要求太多了,见谅!

发表于 2005-8-1 10:07:00 | 显示全部楼层

(defun c:qxdist ( ss p1 p2 dist1 dist2/ SS EN ENOBJ OSM )
  (vl-load-com)

(setq p1 (getpoint))

(setq p2 (getpoint))
  (setq ss (ssget))
  (command "pedit" "M" ss "" "" "j" "0" "")
  (setq en (ssname (ssget p1) 0))
  (setq enobj (vlax-ename->vla-object en))
  (setq dist1 (vlax-curve-getDistAtPoint enobj p1))
  (setq dist2 (vlax-curve-getDistAtPoint enobj p2))

(setq d (- dist1 dist2))
  )

发表于 2005-8-1 11:48:00 | 显示全部楼层

我试了一下:; 错误: 参数名称重复: SS

请您改一下好吗

发表于 2005-8-1 13:36:00 | 显示全部楼层

;1. 将下载的“ddxwzh.fas”存入h盘目录下,如存入
;   其它地址,则修改程序中“(load "h:ddxwzh.fas")”
;   使之相符。
;2. 使用以下示例程序,即可完成所要测量的分段长度。


(defun c:cc()
   (if (null ddxwzh)(load "h:ddxwzh"))
   (setq xtblm '("cmdecho" "osmode")
  xtblz (mapcar 'getvar xtblm)
   )
   (mapcar 'setvar xtblm '(0 0))
   (setq en (car (entsel "\nPline:")))
   (while (progn (setvar "osmode" 512 )(setq pt (getpoint "\npt:")))
      (setq fhz (ddxwzh en pt) )
      (princ "\nfhz=")(princ fhz)
   )
   (mapcar 'setvar xtblm xtblz)(princ)
 )

发表于 2005-8-1 13:37:00 | 显示全部楼层

;1. 将下载的“ddxwzh.fas”存入h盘目录下,如存入
;   其它地址,则修改程序中“(load "h:ddxwzh.fas")”
;   使之相符。
;2. 使用以下示例程序,即可完成所要测量的分段长度。


(defun c:cc()
   (if (null ddxwzh)(load "h:ddxwzh"))
   (setq xtblm '("cmdecho" "osmode")
  xtblz (mapcar 'getvar xtblm)
   )
   (mapcar 'setvar xtblm '(0 0))
   (setq en (car (entsel "\nPline:")))
   (while (progn (setvar "osmode" 512 )(setq pt (getpoint "\npt:")))
      (setq fhz (ddxwzh en pt) )
      (princ "\nfhz=")(princ fhz)
   )
   (mapcar 'setvar xtblm xtblz)(princ)
 )

本帖子中包含更多资源

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

x
发表于 2005-8-1 14:40:00 | 显示全部楼层
讨厌这么麻烦的:
  1. (defun c:test(/ ent pt ss)
  2.   (vl-load-com)
  3.   (setvar "cmdecho" 0)
  4.   (setq ent (entsel "选择多义线..."))
  5.   (setq pt (cadr ent)
  6. ent (car ent))
  7.   (command "_.undo" "be")
  8.   (command "_.explode" ent)
  9.   (setq ent (ssget pt '((0 . "LINE"))))
  10.   (prompt "\n选择段的长度为:")
  11.   (princ (vla-get-length (vlax-ename->vla-object (ssname ent 0))))
  12.   (command "_.undo" "e")
  13.   (command "_.u")
  14.   (princ)  
  15. )
发表于 2005-8-2 10:59:00 | 显示全部楼层

yshf 的程序能不能增加捕捉选项,交点、端点,只有最近点捕捉测量不准确

其他两各程序好像都不能用。

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

本版积分规则

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

GMT+8, 2025-6-4 04:29 , Processed in 0.190273 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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