明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 928|回复: 1

点的问题

[复制链接]
发表于 2005-7-30 21:49 | 显示全部楼层 |阅读模式

碰到一个问题: 我想判明一个点在一个选择集的位置,如是在左上方还是右下方,用getboundingbox函数去得到选择集的范围,然后选择一个点来判断,但在程序的运行中,getboundingbox函数得到的点和getpoint得到的点不是一回事,用(trans 'point 0 1)也没有效果,哪位高手能帮我解决一下

   程序如下,是个标注程序defun c:dx()
  (setq oldos(getvar "osmode"))
  ;(setvar "osmode" 2080)
  ;(command "ucs" "w" "")
  (COMMAND "layer" "m" "dim" "")
 
  ;(COMMAND  "ucs" "o" (getpoint) )
  (setvar "osmode" 53)
 
  (setq ss (ssget))
  (setq nn (sslength ss))
  (setq n 0)
  (setq vobject (ssname ss n))
  (setq vobject (vlax-ename->vla-object vobject))
  ;;(setq xobject (vlax-make-variant vobject vlax-vbobject))
  (vla-getboundingbox vobject 'minpoint 'maxpoint)
  (setq xmin(car  (vlax-safearray->list minpoint))
        ymin(cadr (vlax-safearray->list minpoint))
        xmax (car (vlax-safearray->list maxpoint))
 ymax(cadr (vlax-safearray->list maxpoint)))
  (setq n (1+ n))
  ;;; 取出每个图元,得到坐标最小值和最大值,再分别计算得到
  ;;;X坐标Y坐标最大最小值
  (while (< n nn)
    (setq vobject (ssname ss n))
    (setq vobject (vlax-ename->vla-object vobject))
    ;;;(setq xobject (vlax-make-variant vobject vlax-vbobject))
;;;将图元改为ACTIVEX类型

    (vla-getboundingbox vobject 'minpoint 'maxpoint)
;;;得到最大最小坐标值
    (setq xmin1 (car  (vlax-safearray->list minpoint))
   ymin1 (cadr  (vlax-safearray->list minpoint))
   xmax1 (car  (vlax-safearray->list maxpoint))
   ymax1 (cadr  (vlax-safearray->list maxpoint))
    )
;;;end of setq
    (if (< xmin1 xmin)
      (setq xmin xmin1)
    );_end of if
    (if (< ymin1 ymin)
      (setq ymin ymin1)
    );_end of if
    (if (> xmax1 xmax)
      (setq xmax xmax1)
    );_end of if
    (if (> ymax1 ymax)
      (setq ymax ymax1)
    );_end of if
    (setq n (1+ n))
  );_end of whil 
  (setq
    xmid (/ (+ xmin xmax) 2.0)
    ymid (/ (+ ymin ymax) 2.0)
  ) ;_end of setq
  (setq mid (list xmid ymid))
   (setq mid (trans 'mid 0 1 ))
   ;(setq maxpoint (list xmax ymax)
; maxpoint (trans maxpoint 0 1)
; minpoint (list xmin ymin)
; minpoint (trans minpoint 0 1)
; xmid (x-coordinate mid)
; ymid (y-coordinate mid)
; xmin(x-coordinate minpoint)
; ymin(y-coordinate minpoint)
; xmax(x-coordinate maxpoint)
; ymax(y-coordinate maxpoint)
; )
 
 
 
  (while (setq pt (getpoint "\nselect a point:"))
   
    (if (<= (y-coordinate pt) ymid)
      (progn (setq pt2 (list  (x-coordinate pt)(- ymin 15.0)))
 ;(setq pt (trans pt 0 1)
  ;     pt2(trans pt2 0 1))
 (command "dimdec" "1" "dimordinate"  pt   pt2 ))
      (progn (setq pt2 (list  (x-coordinate pt)(+ ymax 15.0)))
 (command "dimdec" "1" "dimordinate" pt pt2))
      );end of if
    );end of while
  )

 楼主| 发表于 2005-7-30 22:04 | 显示全部楼层
已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 11:59 , Processed in 0.161290 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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