乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 148|回复: 9

任意一段圆弧,怎么知道它经过哪几个象限点?请贴代码

[复制链接]

39

主题

97

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2003-12-18 14:25:00 | 显示全部楼层 |阅读模式
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-18 14:54:00 | 显示全部楼层
剛寫了一個,
(defun c:test( / ss ename data cpt ar one tow thre four one-a tow-a three-a four-a)
  (setq ss (ssget '((0 . "arc"))))
  (setq ename (ssname ss 0))
  (setq data(entget ename))
  (setq cpt(cdr (assoc 10 data)))
  (setq ar(cdr (assoc 40 data)))
  (setq one (list (+ (car cpt) ar) (cadr cpt)))
  (setq tow (list (car cpt) (+ (cadr cpt) ar)))
  (setq three (list (- (car cpt) ar) (cadr cpt)))
  (setq four (list (car cpt) (- (cadr cpt) ar)))
  (setq one-a(osnap one "_qua" ))
  (setq tow-a(osnap tow "_qua" ))
  (setq three-a(osnap three "_qua" ))
  (setq four-a(osnap four "_qua" ))
  (princ "\n檢測報告:你所選的圓弧通過的象限點有")
  (if(/= one-a nil) (princ "[第一個象限點];"))
  (if(/= tow-a nil) (princ "[第二個象限點];"))
  (if(/= three-a nil) (princ "[第三個象限點];"))
  (if(/= four-a nil) (princ "[第四個象限點];"))
  (princ)
)
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-18 15:03:00 | 显示全部楼层
有個小問題問你. 一條圓弧能通過第幾個象限點肉眼也可以看出為什麼要用程序來做呢?  我寫的不好. 還要大家多多指教哦.
回复

使用道具 举报

39

主题

97

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2003-12-18 16:18:00 | 显示全部楼层
这个是用在程序里边的,程序里边会涉及很多的图元,谢谢你的代码,帮了我的大忙。
你的程序很有创意
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-18 16:37:00 | 显示全部楼层
樓上可不可以把你的程序給大家學習學習? 謝謝 ! !
回复

使用道具 举报

39

主题

97

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2003-12-19 07:52:00 | 显示全部楼层
对了,你的代码在算四个象限点时,能用polar函数的话会更好,因为要考虑到UCS的变化。
当UCS与WCS不一致时,你的代码会出现找不到象限点的问题。
谢谢。
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-12-19 08:36:00 | 显示全部楼层
to   congcong:
         可能你寫的程序是用在三維方面的了. 現在問題是polar涵數相對圓心點算計出象限點但我還不知道用什麼方式來判斷所算計出的象限點所在弧的位置呀. 功力有限請莫見怪才好. 另外你的見義很好, 具備著好好的寫程序的天份. 好好加油哦! ! !
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-19 09:03:00 | 显示全部楼层

我也写了一个,在轴上处理可能有些不对,参看一下。。。
  1. (defun c:Get( / ent ents start_ang end_ang s e n cr)
  2.   (setq ent (car (entsel)))
  3.   (setq ents (entget ent))
  4.   (setq start_ang (cdr (assoc 50 ents)))
  5.   (setq end_ang (cdr (assoc 51 ents)))
  6.   (setq s (/ (* start_ang 4) 2 pi))
  7.   (setq e (/ (* end_ang 4) 2 pi))
  8.   (setq s (+ 1 (fix s)))
  9.   (if (equal e 0 0.000000001) (setq e 4) (if (equal (fix e) e 0.00000001) (setq e (fix e)) (setq e (1+ (fix e)))))
  10.   (if (> s e) (setq n (+ (- 4 s) e 1)) (setq n (+ 1(- e s))))
  11.   (setq i 0 cr "圆弧通过")
  12.   (repeat n
  13.     (setq cr (strcat cr (itoa s) ","))
  14.     (if (= s 4) (setq s 1) (setq s (1+ s)))
  15.   )
  16.   (setq cr (strcat cr "象限"))  
  17.   (princ cr)
  18.   (princ)
  19. )
  20. )
回复

使用道具 举报

39

主题

97

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2003-12-19 09:10:00 | 显示全部楼层
多谢谢版主夸奖,我一定多多加油,谢谢。
我将改过的程序贴在下面
(defun c:test( / ss ename data cpt ar one two thre four one-a two-a three-a four-a)
  (vl-cmdf "select" "")
  (setq ss      (ssget '((0 . "arc"))))
  (setq ename   (ssname ss 0))
  (setq data    (entget ename))
  (setq cpt     (trans (cdr (assoc 10 data)) 0 1 ))
  (setq ar      (cdr (assoc 40 data)))
  (setq one     (polar cpt 0 ar))
  (setq two     (polar cpt (/ pi 2.0) ar))
  (setq three   (polar cpt pi ar))
  (setq four    (polar cpt (* pi 1.5) ar))
  
  (setq one-a   (osnap one "_qua" ))
  (setq two-a   (osnap two "_qua" ))
  (setq three-a (osnap three "_qua" ))
  (setq four-a  (osnap four "_qua" ))
  (princ "\n檢測報告:你所選的圓弧通過的象限點有")
  (if(/= one-a nil)   (princ "[第一個象限點];"))
  (if(/= two-a nil)   (princ "[第二個象限點];"))
  (if(/= three-a nil) (princ "[第三個象限點];"))
  (if(/= four-a nil)  (princ "[第四個象限點];"))
  (princ)
)
这段程序对任意平面UCS状态下的任意圆弧均有效。
由于原来的程序在运行后会多出一条空白的命令行,所在在前面在加上vl-cmdf "select" ""
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-12-19 09:19:00 | 显示全部楼层
这个判断应该是错误的,如果圆弧的起点不在轴上,则此象限会被忽略。。。
看看我8楼的。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 18:08 , Processed in 0.403079 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表