明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1201|回复: 2

[求助]

[复制链接]
发表于 2009-11-8 22:54:00 | 显示全部楼层 |阅读模式
(defun c:chapic3 () ;一个图像裁剪程序,运行时提示安全数组不正确,请哪位高手给予指导一下
  (vl-load-com)
  (setq acad (vlax-get-acad-object))
  (setq document (vla-get-activedocument acad))
  (setq modelspace (vla-get-modelspace document))
  (setq utili (vla-get-utility document))
  (setq image (vlax-ename->vla-object (car (entsel "\n Ñ¡ÔñͼÏñ£º"))))
  (setq ptlis '())
  (setq n 0)
  (command "line")
  (vla-setvariable document "osmode" 1)
  (while (setq pt (getpoint "\n ÊäÈë²Ã¼ô±ß½ç:"))
    (progn
      (command pt)
      (setq ptlis (append ptlis (list (list (car pt) (cadr pt)))))
      (setq n (1+ n))
    )
  )
  (command "")
  (setq ptarray (vlax-make-safearray vlax-vbdouble (cons 1 n) (cons 0 1)))
  (setq ptarray(vlax-safearray-fill ptarray ptlis))
  (setq clippt (vlax-make-variant ptarray))
  (vla-clipboundary image clippt)
  (vla-put-clippingenabled image :vlax-true)
  (vla-update image)
  (vla-zoompickwindow acad)
)
发表于 2009-11-8 23:30:00 | 显示全部楼层
我做了些修改,测试了一下,没问题

[UseMoney=5]
  1. (defun c:chapic3 ()
  2.   (defun 3dPoint->2dPoint (3dpt)
  3.     (list (car 3dpt) (cadr 3dpt))
  4.   )
  5.   (defun gp:list->variantArray (ptsList / arraySpace sArray)
  6.      ; 给以双精度实数表示的二维点数组分配空间
  7.     (setq arraySpace
  8.     (vlax-make-safearray
  9.       vlax-vbdouble  ; 元素类型
  10.       (cons 0
  11.      (- (length ptsList) 1)
  12.       )    ; 数组维数
  13.     )
  14.     )
  15.     (setq sArray (vlax-safearray-fill arraySpace ptsList))
  16.      ; 返回数组变体
  17.     (vlax-make-variant sArray)
  18.   )
  19.   (vl-load-com)
  20.   (setq acad (vlax-get-acad-object))
  21.   (setq document (vla-get-activedocument acad))
  22.   (setq modelspace (vla-get-modelspace document))
  23.   (setq utili (vla-get-utility document))
  24.   (setq image (vlax-ename->vla-object (car (entsel "\n 选择要修剪的图片"))))
  25.   (setq ptlis '())
  26.   (setq n 0)
  27.   (command "line")
  28.   (vla-setvariable document "osmode" 1)
  29.   (while (setq pt (getpoint "\n 点取一点:"))
  30.     (progn
  31.       (command pt)
  32.       (setq ptlis (append ptlis (list (list (car pt) (cadr pt)))))
  33.       (setq n (1+ n))
  34.     )
  35.   )
  36.   (command "")
  37.   (setq polypoints
  38.   (apply 'append
  39.   (mapcar '3dPoint->2dPoint
  40.    ptlis
  41.   )
  42.   )
  43.   )
  44.   (setq clippt (gp:list->variantArray polypoints))
  45.   (vla-clipboundary image clippt)
  46.   (vla-put-clippingenabled image :vlax-true)
  47.   (vla-update image)
  48.   (vla-zoompickwindow acad)
  49. )
[/UseMoney]

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2009-11-9 14:50:00 | 显示全部楼层

多谢指教

谢谢,原来是提供给vla-clipboundary的坐标数组格式不对,明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 19:22 , Processed in 0.167117 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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