乐筑天下

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

這個判斷式很有用,請版主幫忙寫寫吧.

[复制链接]

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-9-7 11:38:00 | 显示全部楼层 |阅读模式
我寫了一個程序,碰到這樣的一個很難解決的問題.是這樣一回事我說給大家看看:
我用了
(setq a (entsel));;;選了一條樣條曲線
(setq as (cadr a));;;提取選點
........
(setq ;ssn(ssname a n)
          endata (entget (car a))
          spo (CDR (assoc 10 endata)));;;自動取得spline的起點座標.設成spo變量
  (repeat (length endata)
    (setq end (cdr (nth n endata)));;;自動取得spline的終點座標,設成end變量,
    (setq n (1+ n)))
.......
當我自動提取了樣條曲線的起點和終點時,我想判別as如果接近起點就
(setq p1 "樣條曲線的起點")
如果as接近樣條曲線的終點
(setq p1 "樣條曲線的終點")
這個問題是怎樣解決啊?請大家來分享各自的見解.
回复

使用道具 举报

lyy

27

主题

97

帖子

7

银币

后起之秀

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

铜币
205
发表于 2003-9-9 14:11:00 | 显示全部楼层
是沿着曲线接近吗?
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-9-9 14:23:00 | 显示全部楼层
是啊有的圖元只離曲線 0.1mm 而大多數是和曲線相交. 但是小的不是很熟悉 Lisp .不知怎麼寫.
樓上的好心人,你就教教我們晚輩吧.謝謝了.
回复

使用道具 举报

lyy

27

主题

97

帖子

7

银币

后起之秀

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

铜币
205
发表于 2003-9-9 15:37:00 | 显示全部楼层
;;试试看
(defun c:test(/ e ent pt dis len)
  (setq e T)
  (while (and e (setq ent (entsel "\n请点选spline线:")))
    (if (= (cdr (assoc 0 (entget (car ent)))) "SPLINE")
      (progn
        (setq e nil
              pt (cadr ent)
              ent (vlax-ename->vla-object (car ent))
              pt (vlax-curve-getClosestPointTo ent pt)
              dis (vlax-curve-getDistAtPoint ent pt)
              len (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
              pt (if ( DISTFULLA DISTFULLB)
    (PROGN (PRINC "\n選擇接近")
      (princ spo))
    (progn (PRINC "\n選擇接近")
      (princ END)))
  (PRINC))
回复

使用道具 举报

lyy

27

主题

97

帖子

7

银币

后起之秀

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

铜币
205
发表于 2003-9-9 15:54:00 | 显示全部楼层
看一下:
http://www.mjtd.com/a2/list.asp?id=275
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2003-9-9 16:06:00 | 显示全部楼层
6楼的你这肯定不行!你这是直线距离而不是沿着曲线接近。
回复

使用道具 举报

44

主题

164

帖子

8

银币

后起之秀

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

铜币
340
发表于 2003-9-9 16:12:00 | 显示全部楼层
如果是沿直线距离接近那直接用(osnap (cadr (entsel "\n点选spline线:")) "end")即可。
回复

使用道具 举报

lyy

27

主题

97

帖子

7

银币

后起之秀

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

铜币
205
发表于 2003-9-9 18:00:00 | 显示全部楼层
lyy兄你那麼快就貼出來,我還想推一下BDYCAD看他甚麼時候會做出來,
下列是我之前的一段程序
(if (< (distance (cadr A) SPO) (distance (cadr A) EPO))
    ;;以上判斷有更精碓的方法,但讓我偷懶一下
其實我沒那麼懶,因我早就寫好了,"延伸SPLINE首尾端至某線段"中就有那麼一段
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 06:09 , Processed in 1.257544 second(s), 68 queries .

© 2020-2025 乐筑天下

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