明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1818|回复: 7

[求助]lisp 怎么保存当前的窗口ZOOM

[复制链接]
发表于 2008-4-21 14:58 | 显示全部楼层 |阅读模式

1、lisp 怎么保存当前的窗口ZOOM,然后到程序完了后恢复?

2、用OFFSET 时对一个矩形怎么样才能保证它是往外面,就是放大的方向OFFSET 1个毫米那?

3、怎么样获取一个PLINE线的所有顶点坐标,必须是闭合的?

我一直用VBA开发,这些一直不懂,VBA实在是没法窗口的批量裁剪。所以想自己用LISP做个结合VBA的程序,望大家帮助

发表于 2008-4-21 16:36 | 显示全部楼层
1、zoom p
2、vla-offset obj 1不行吗?
3、看看vlax-curse的帮助,不行就查找一下这里,很多的~~

发表于 2008-4-21 16:46 | 显示全部楼层

1.用下面函数求出屏幕的的范围,储存,然后 zoom w

(defun viewBox (/ vc vh vs)
  (setq vc (trans (getvar "viewctr") 1 2)
        vh (getvar "viewsize")
        vs (mapcar '/ (list (* (apply '/ (getvar "screensize")) vh) vh) '(2 2))
  )
  (mapcar '(lambda (f) (trans (mapcar f vc vs) 2 1)) '(- +))
)

2.笨方法,以前写过一个用vlax-curve-getFirstDeriv方法的,适应任意曲线,一下子没找到

;;只有矩形适应

(defun c:test (/ rec p1 p2 p d)
(setq rec (entsel))
(setq rec (car rec))
(setq p1  (vlax-curve-getPointAtParam rec 0.5))
(setq p2  (vlax-curve-getPointAtParam rec 3.5))
(setq p   (polar p1 (angle p1 p2) 1))
(setq d   (distance p1 p))
(if (not (equal (angle p1 p) (angle p2 p) 1e-6))
  (setq d (- d))
)
(vla-offset (vlax-ename->vla-object rec) d)
)

3.(defun polyVertexs (ply / i p lst)
    (setq i 0)
    (while (setq p (vlax-curve-getPointAtParam ply i))
      (setq lst (cons p lst) i (1+ i))
    )
    (if (vlax-curve-isClosed ply) (setq lst (cdr lst)))
    (reverse lst)
  )

 楼主| 发表于 2008-4-21 20:47 | 显示全部楼层

vlax-curve-getPointAtParam

这些是什么啊?

发表于 2008-4-21 21:41 | 显示全部楼层

是vlisp 函数

从本论坛下一个函数表吧

发表于 2008-4-21 22:39 | 显示全部楼层
本帖最后由 作者 于 2008-4-21 23:16:27 编辑

第一个问题应该用command命令view保存视图,恢复视图,完全不用再编程。

vlax-curve-getFirstDeriv与这点的法向矢量的叉积,可以判断内外。

发表于 2008-4-22 00:46 | 显示全部楼层

1、lisp 怎么保存当前的窗口ZOOM,然后到程序完了后恢复?

    (command ".zoom" p1 p2)

    ....;你的程序片段

    (command ".zoom" "p")

    或如楼上说过的,命名后恢复(可用cad命令或vla方法)

2、用OFFSET 时对一个矩形怎么样才能保证它是往外面,就是放大的方向OFFSET 1个毫米那?

    不要保证,vla-offset 方法,大于0值是向面积增大的方向。

3、怎么样获取一个PLINE线的所有顶点坐标,必须是闭合的?

    搜索。

发表于 2008-4-22 07:52 | 显示全部楼层

lisp 怎么保存当前的窗口ZOOM

=>連續ZOOM N次的話,看看VIEW指令的用法吧!

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

本版积分规则

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

GMT+8, 2024-5-13 16:29 , Processed in 0.167586 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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