明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2687|回复: 12

请教:如何用autolisp实现斜向的getcorner

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

无论改UCS或snapang都无法改变getcorner的绝对

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2006-3-22 23:03 | 显示全部楼层

晕,怎么就自己发表出来了

 

无论改UCS或snapang都无法改变getcorner的角度

可以用grread模拟斜向getcorner

但问题是无法方便的使用捕捉模式

还有可以改UCS后调用rec取lastpoint

但是必须正确输入第二点否则程序中断

请问:有没有完美的解决方案?

发表于 2006-3-23 06:01 | 显示全部楼层
不知道楼主做斜向的getcorner有什么意义,如果是斜向的还得提供一个斜向的角度,使程序复杂化了。
 楼主| 发表于 2006-3-23 23:16 | 显示全部楼层

自动配合UCS的角度即可

大概的用途是这样的

需要在一系列的矩形区域内进行某项操作

每个矩形区域的方向不固定

大小也不固定

有就是说需要在程序中

先改变UCS

再根据矩形的两个对角点来确定矩形区域

而系统的getcorner函数

与UCS的角度无关

发表于 2006-3-24 23:02 | 显示全部楼层

 

如果其它办法都不行的话试一试用_rectang命令配合里面的旋转应该可以模拟,

(setq p1(getpoint "\n 指定第一个角点:")

ang(点义好旋转的角度))

(command "_rectang" p1 "r" ang  Pause  )

获的最后生成的长方形再获的它的各顶点,应该可以满足你的要求

我没试过只是这么想!!

 楼主| 发表于 2006-3-25 00:39 | 显示全部楼层

你说的这个思路

我前面已经说过了

“还有可以改UCS后调用rec取lastpoint

但是必须正确输入第二点否则程序中断”

就是当PAUSE时

若未输点程序会要求你继续输入

讨厌的是会出现提示

“指定另一个角点或 [尺寸(D)]:”

如果你输入选项“D”

LISP就中断了

发表于 2006-3-25 13:02 | 显示全部楼层

用这样的笨办法看行不行

(defun c:jx ()
  (setvar "cmdecho" 0)
  (setq os (getvar "ORTHOMODE"))
  (setq p1  (getpoint "\n 指定矩形区域一条边的第一点:")
 p2  (getpoint p1 "\n 指定矩形区域一条边的第二点:")

 ang (angle p1 p2)
  )

  (command "line" p1 p2 "")
  (setq o1 (entlast))
  (setvar "snapang" ang)
  (setvar "ORTHOMODE" 1)
  (command "_copy" o1 "" p2 PAUSE)
  (if (equal p2 (getvar "lastpoint"))
    (command "_erase" o1 (entlast) "")
  )
  (setvar "snapang" 0)
  (setvar "ORTHOMODE" os)
)
(defun err (msg)
  (setvar "snapang" 0)
  (setvar "ORTHOMODE" os)
  (command ".undo" "e")

)


 

发表于 2006-3-25 14:06 | 显示全部楼层
masterlong发表于2006-3-23 23:16:00 自动配合UCS的角度即可 大概的用途是这样的 需要在一系列的矩形区域内进行某项操作 每个矩形区域的方向不固...
我突然又想问个问题,你如果为了选定斜的某个区域的话,那不干脆直接选择任意一个矩形好了,对角点的坐标由程序求出。
 楼主| 发表于 2006-3-28 22:03 | 显示全部楼层

回楼上

是任意的矩形区域

不是任意的矩形或四直线围成的矩形

 楼主| 发表于 2006-3-28 22:15 | 显示全部楼层

非常感谢7楼

类似你的方法我也想过

但在我的程序里不太适合这样做

因为和其它的操作相比显得太特殊

现在我还是采用rec的方法

额外加一个提示用来提醒使用的人不要乱点

 

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

本版积分规则

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

GMT+8, 2024-6-25 15:02 , Processed in 0.177690 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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