明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1388|回复: 2

高手请不吝指教

[复制链接]
发表于 2006-3-10 00:21 | 显示全部楼层 |阅读模式


这是置顶的帖子里MCCAD达人写的求交点的程序,我想问一下
(vlax-safearray-get-u-bound intpoints 1)
(vlax-safearray-get-l-bound intpoints 1)

vlax-safearray-get-element

这几个函数都是什么意思?
原程序如下:
  1. (defun c:GIP ()
  2.     (c:getinterpoint)
  3.   )
  4.   (defun C:GetInterPoint (/        ent1     ent2     ent_1    ent_2
  5.                           ax_ent_1 ax_ent_2 intpoints         i
  6.                           j        k        disp
  7.                          )
  8.     (setq ent1 (entsel "\n选择第一条曲线:"))
  9.     (setq ent2 (entsel "\n选择第二条曲线:"))
  10.     (setq ent_1 (car ent1)
  11.           ent_2 (car ent2)
  12.     )
  13.     (setq ax_ent_1 (vlax-ename->vla-object ent_1)
  14.           ax_ent_2 (vlax-ename->vla-object ent_2)
  15.     )
  16.     (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
  17.     (setq intpoints (vlax-variant-value intpoints))
  18.     (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
  19.       (progn
  20.         (setq i 0)
  21.         (setq j 0)
  22.         (setq k 0)
  23.         (setq disp "")
  24.         (repeat
  25.           (/ (+ 1
  26.                 (- (vlax-safearray-get-u-bound intpoints 1)
  27.                    (vlax-safearray-get-l-bound intpoints 1)
  28.                 )
  29.              )
  30.              3
  31.           )
  32.            (setq
  33.              disp (strcat
  34.                     disp
  35.                     "\n交点"
  36.                     (itoa (+ k 1))
  37.                     "坐标为:"
  38.                     (rtos (vlax-safearray-get-element intpoints j))
  39.                     " , "
  40.                     (rtos (vlax-safearray-get-element intpoints (+ 1 j)))
  41.                     " , "
  42.                     (rtos (vlax-safearray-get-element intpoints (+ 2 j)))
  43.                   )
  44.            )
  45.            (setq i (+ 2 i)
  46.                  j (+ 3 j)
  47.                  k (+ 1 k)
  48.            )
  49.         )
  50.         (princ disp)
  51.       )
  52.       (princ "\n两曲线没有交点")
  53.     )
  54.     (princ "\n明经通道LISP示例-求两曲线交点")
  55.     (princ)
  56.   )
发表于 2006-3-10 11:31 | 显示全部楼层

语法

      (vlax-safearray-get-element var element...)

功能

       返回 Safearray 中的元素

 

说明

1)参数 var 为变量,其数据类型为 SafeArray。

2)参数 element... 为整数型,指定要检索的元素的索引。对于一维数组,应指定一个整数,对于多维数组,指定的索引数应与数组的维数相等。

返回值:

元素的值。

范例

创建二维数组,其中每个维都从索引 1 开始:

_$ (setq matrix (vlax-make-safearray vlax-vbString '(1 . 3) '(1 . 3) ))

#<safearray...>

使用 vlax-safearray-put-element 填满数组:

_$ (vlax-safearray-put-element matrix 1 1 "a")

"a"

_$ (vlax-safearray-put-element matrix 1 2 "b")

"b"

_$ (vlax-safearray-put-element matrix 1 3 "c")

"c"

_$ (vlax-safearray-put-element matrix 2 1 "d")

"d"

_$ (vlax-safearray-put-element matrix 2 2 "e")

"e"

_$ (vlax-safearray-put-element matrix 2 3 " f ")

" f "

使用 vlax-safearray-get-element 检索数组第二维中的第二个元素:

$ (vlax-safearray-get-element matrix 2 2)

"e"

请参见 vlax-make-safearray、vlax-safearray-get-dim、vlax-safearray-get-l-bound、vlax-safearray-get-u-bound 和 vlax-safearray-put-element 函数。

 

 

语法

      (vlax-safearray-get-l-bound var dim)

功能

       返回 Safearray 某一维的下界(开始索引)。

 

说明

1)参数 var 为变量,其数据类型为 SafeArray。

2)参数 dim 为数组的维数。第一维为 1。

返回值:

整数,表示维的下界(开始索引)。如果 var 不是数组或 dim 无效(如设置为 0 或大于数组维数的数值),则返回错误信息。

范例

1)对如下定义的 SafeArray 求值:

_$ (vlax-make-safearray vlax-vbString '(1 . 2) '(3 . 4) )

2)获取数组第一维的开始索引值:

_$ (vlax-safearray-get-l-bound tmatrix 1)

1

第一维以索引 1 开始。

3)获取数组第二维的开始索引值:

_$ (vlax-safearray-get-l-bound tmatrix 2)

3

第二维以索引 3 开始。

请参见 vlax-make-safearray、vlax-safearray-get-dim 和 vlax-safearray-get-u-bound 函数。

 

语法

      (vlax-safearray-get-u-bound var dim)

功能

       返回 Safearray 某一维的上界(结束索引)。

 

说明

1)参数 var 为变量,其数据类型为 SafeArray。

2)参数 dim 为数组的维数。第一维为 1。

返回值:

整数,表示维的上界(结束索引)。若 var 不是数组或 dim 无效(如设置为 0 或大于数组维数的数值),则返回错误信息。

范例

1)对如下定义的 SafeArray 求值:

_$ (vlax-make-safearray vlax-vbString '(1 . 2) '(3 . 4) )

#<safearray...>

2)获取数组第一维的结束索引值:

_$ (vlax-safearray-get-u-bound tmatrix 1)

2

第一维以索引 2 结束。

3)获取数组第二维的结束索引值:

$ (vlax-safearray-get-u-bound tmatrix 2)

4

第二维以索引 4 结束。

请参见 vlax-make-safearray、vlax-safearray-get-dim 和 vlax-safearray-get-l-bound 函数。

 楼主| 发表于 2006-3-12 12:04 | 显示全部楼层

谢谢

谢谢楼上的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-18 21:58 , Processed in 0.156502 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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