AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[討論]LISP 求交點

1頁(共2頁) 1, 2  下一步

上一篇主題 下一篇主題 向下

[討論]LISP 求交點

發表 由 s924310 于 2011-07-21, 11:05

在LISP裡面
有inters 可以求兩條線的交點
那有沒有其他 函數 可以求不同的交點
例如:
1.求 兩個圓的交點 (可能有一個交點或二個交點) 再選擇其中一個交點

2.求 一直線碰一圓的交點 (最近交點或 最遠交點)

avatar
s924310
初級會員
初級會員

文章總數 : 31
年齡 : 26
來自 : 高雄
職業 : 電腦繪圖
愛好 : 看熱鬧
個性 : 隨性
使用年資 : 4年
使用版本 : 2006
積分 : 2
經驗值 : 3114
威望值 : 21
注冊日期 : 2009-09-21
男 水瓶座 馬

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2011-07-21, 14:56

以下程式提供你參考,程式可以取出相接二物件的交點,不過交點取出後,還必需需加一些比較判斷式才能達到你的目的,你自己再依需求修改吧. 我轉
(以下回覆可見


ginse0727 在 2011-07-22, 21:57 作了第 1 次修改 (原因 : 修改)
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 tarpon 于 2011-07-23, 13:37

看看學習一下物件交叉點lisp取出方法 親一個
avatar
tarpon
中級會員
中級會員

文章總數 : 201
年齡 : 27
來自 : 台北
職業 : 設計
愛好 : 打球
個性 : 溫和
使用年資 : 5年
使用版本 : 2006
積分 : 6
經驗值 : 3647
威望值 : 238
注冊日期 : 2010-07-01
串連貼紙成功 男 巨蟹座 馬

回頂端 向下

回復: [討論]LISP 求交點

發表 由 andychen 于 2011-07-23, 23:58

s924310 寫到:在LISP裡面
有inters 可以求兩條線的交點
那有沒有其他 函數 可以求不同的交點
例如:
1.求 兩個圓的交點 (可能有一個交點或二個交點) 再選擇其中一個交點

2.求 一直線碰一圓的交點 (最近交點或 最遠交點)


兩個圓的交叉點,我寫過。
直線和圓的交叉點,我也寫過。
改天,找程式碼找回來,再po上來跟大家分享。


andychen
該用戶停權中
該用戶停權中

文章總數 : 187
年齡 : 33
經驗值 : 3503
威望值 : 71
注冊日期 : 2010-04-09
男 水瓶座 豬

回頂端 向下

回復: [討論]LISP 求交點

發表 由 Jakie 于 2011-12-21, 20:45

土木工程再使用上很平常 也很實用
下載下載 我來了

Jakie
初級會員
初級會員

文章總數 : 75
年齡 : 40
來自 : Tainan Baiho
職業 : 土木
愛好 : 自然藝術
個性 : 有點品味,有點走味~^.^
使用年資 : 8年
使用版本 : 2004
積分 : 1
經驗值 : 2952
威望值 : 87
注冊日期 : 2010-10-28
藍鵲79號
男 獅子座 蛇

回頂端 向下

回復: [討論]LISP 求交點

發表 由 HEMOS 于 2011-12-22, 03:01

程式語法、思考邏輯,值得觀摩學習!!
avatar
HEMOS
榮譽顧問
榮譽顧問

文章總數 : 791
年齡 : 45
來自 : 台北
職業 : 土木結構
愛好 : 攝影
個性 : 和善
使用年資 : 10年以上
使用版本 : AutoCAD 2014
積分 : 26
最佳解答 : 3
經驗值 : 7252
威望值 : 1508
回帖精華 : 1
注冊日期 : 2009-02-23
藍鵲38號
男 射手座 鼠

回頂端 向下

回復: [討論]LISP 求交點

發表 由 835 于 2012-01-11, 02:20

請問此程式能排除兩物件「本無交點」的情況或「因故抓不到交點」的情況嗎?

(我的程度太低了....看不太懂程式的語法、內容....
謝謝你讓我開了眼界....)
avatar
835
初級會員
初級會員

文章總數 : 34
年齡 : 39
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 2389
威望值 : 56
注冊日期 : 2012-01-02
藍鵲272號
男 處女座 馬

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2012-01-13, 01:20

不好意思,目前並沒有加上這種情況的判斷式,僅針對當時版主需求,而找出相符的程式供參考,等我比較有空檔再來加,也歡迎高手們可以抽空幫忙。
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2012-01-23, 03:55

835 寫到:請問此程式能排除兩物件「本無交點」的情況或「因故抓不到交點」的情況嗎?

(我的程度太低了....看不太懂程式的語法、內容....
謝謝你讓我開了眼界....)

其實這種VLA(VLISP ActiveX),比起用AutoLISP,感覺強很多可以更快達到目的,
我自己也不是很熟,也還在學習中,我把你問題中提的[本無交點],[因故抓不到交點]等情況,
程式內容做了些修改,提供給你參考看看. 嘻嘻

(如果你對lisp還不是很熟,建議先學AutoLISP,會比較容易上手)

以下回覆可見


Tiger&蘋果爸 寫到:讚啦!! 謝謝熱心程式分享~< 積分 +1>
[公告]關於團隊成員的回文及貢獻


Tiger&蘋果爸 在 2012-01-23, 05:44 作了第 1 次修改 (原因 : 非常專業喔~)
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 835 于 2012-01-30, 10:07

首先跟各位拜個晚年,恭祝大家龍年行大運~
再來感謝ginse0727大大在過年期間還撥冗改寫程式以回覆小弟的問題,
因小弟閒賦在家時鮮少上網,故遲至今日才致上感謝之意,
希望您別介意...

而關於程式本身,小弟擬再請教幾個問題,希望ginse0727大大與版上其他先進能再撥冗釋疑:
1.若我想自學VLA,要如何入門呢?坊間有書籍或補習班可供參考嗎?
2.函數 vlax-get-acad-object 根據書中(吳永進、林美櫻老師著)之解釋,為「取得目前AutoCAD作業的頂層應用程式」,這是什麼意思呢?
3.函數 vla-get-ActiveDocument 與 vla-get-modelspace 其用法與目的為何?而程式中您有一行如下:
(setq mspace (vla-get-modelspace acaddocument));但下面之程式似乎並未應用到變數 mspace ,那它必須存在嗎?
4.副程式 (int_list) 中,有運用到 vlax-safearray-get-u-bound、 vlax-safearray-get-l-bound 、vlax-safearray-get-element的函數,能否為小弟解釋說明其用法、目的與使用時機?(書上的說明太過簡略,我實在是無法理解....)

最後,小弟也現醜一下,以我能理解的方式,附上對兩物件「本無交點」或「因故抓不到交點」時避免程式錯誤的寫法,希望版上先進能不吝指教:

代碼:
(defun c:int ()
  (vl-load-com)
  (start_lsp)

  (setq en-1 (car (entsel "\n選取擬求交點之主物件:")))
  (setq enx-1 (vlax-ename->vla-object en-1))

  (setq en-2 (car (entsel "\n選取擬求交點之從屬物件:")))
  (setq enx-2 (vlax-ename->vla-object en-2))

  (setq intvar (vla-intersectwith enx-1 enx-2 acextendnone))

  (if (safearray-value (vlax-variant-value intvar))  ;;加入本行可去除抓不到交點之情況
    (progn   
      (setq listpp (vlax-safearray->list (vlax-variant-value intvar)))

      (setq ij 1
       xyzlist nil
       intpp_list-ij
       nil
      )

      (foreach val listpp
   (setq xyzlist (cons val xyzlist))
   (if (= (rem ij 3) 0)
     (progn
       (setq xyzlist (reverse xyzlist))
       (setq intpp_list-ij
        (cons xyzlist intpp_list-ij)
       )
       (setq xyzlist nil)
     )
   )
   (setq ij (1+ ij))
      )
    )

    (alert "找不到交點!!")
  )
  (foreach pp intpp_list-ij
    (command "circle" pp 2)
  ) ;;僅以畫圓的方式標示交點位置,並無其他意義
  (end_lsp)
  (prin1)
)
 
avatar
835
初級會員
初級會員

文章總數 : 34
年齡 : 39
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 2389
威望值 : 56
注冊日期 : 2012-01-02
藍鵲272號
男 處女座 馬

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2012-01-31, 14:41

835大大您好,以下回覆您的問題:

1.VLA我個人不曉得坊間哪裡有在上,之前我是在翔虹的吳永進老師那學AutoLISP的.你可以在網上查看看,我個人是覺得教的很好哦!不過VLA只有教到半天的課,算入門吧後面還是要靠自學.
我目前參考的也是(吳永進、林美櫻老師著)這一本.您也可以上明經通道網站,上面也不少的資料可供查詢.

2.字面上的解釋是取得AutoCAD的母體物件,我找不到更好的解釋,個人粗淺的見解是:
取得當前AutoCAD應用程式的組合物件,就是先取出目前AutoCAD這一個大包裏,接著再看你要自包裏裡取出什麼的集合物件,
例如說再取出當前作用中的圖檔物件,而圖檔物件裡又包含著模型空間和圖紙空間,而模型空間裡又有著圖層,圖塊,標註....等等.
你可以參考AutoCAD ActiveX物件模型架構圖.

3.關於第3個問題,說來倒是有點不好意思,因為當時是看到版主提出需求,我想練練功就找相關的範例,剛好找了一個vla-IntersectWith函數,這個函數的範例可以解決版主的需求,
所以我就拿了這個範例來修改,因為範例是進入到模型空間裡畫一個圓和線,再求二物件的交點,我把它改寫成用選取的,所以倒是不需要下列這一行了,倒是被眼尖的您給發現了.
(setq acadobject(vlax-get-acad-object) acaddocument(vla-get-activedocument acadobject) mspace(vla-get-modelspace acaddocument))
不過如果是要作圖,可少不了上面這一段,依序為取得AutoCAD應用程式物件,取得當前作用的圖檔,取得模型空間集合物件,
假設如果要作一個圓在模型空間,那就會再加上(setq xobj(vla-addcircle mspace(vlax-3d-point'(50 30 0) 12.5))

4.要請你參考程式內容,因為求出的intpoints裡面是一個一維陣列,所有點的x,y,z,元素都依序放在陣列中,
假設我今天是作一個圓,圓上有一條線,交點有二個(1.0,2.0,0.0) (3.0,4.0,0.0),那intpoints裡會依序排列形成(1.0,2.0,0.0,3.0,4.0,0.0),共有六個元素.
(vlax-safearray-get-u-bound intpoints 1) 指的是取出陣列元素的頂部索引第1位元素,也就是0,
(vlax-safearray-get-l-bound intpoints 1) 指的是取出陣列元素的底部索引值1位元素,也就是5,
(vlax-safearray-get-element intpoints 3) 是依序索引值取出陣列中元素的值,得到的值會是3.0

程式中副程式的件用是選取的二物件有交點時,就列印出所有的交點,沒交點時(指的是錯選,或是選到不對的物件)則重新選取.

雖然我還沒能細看您的程式,但看來您的功力也挺強的,先前建議學習的一番話倒是顯得有點好笑了,
因為我自己也是半桶水,還在學習中可能回答的也不是很好,還請多包含.
有空再來研究一下您程式的邏輯,互相交流學習一下.
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 835 于 2012-02-02, 08:12

ginse0727大大,原來您是同門師兄,幸會了
希望往後可以多多交流囉~

小弟想再向師兄請教:
何謂「安全陣列的上、下限值」?
您在上一篇回復之第4點裡,所舉的範例,假設圓與線有兩個交點(1.0,2.0,0.0) (3.0,4.0,0.0), 那intpoints裡會依序排列形成(1.0,2.0,0.0,3.0,4.0,0.0),共有六個元素.
那為何 (vlax-safearray-get-u-bound intpoints 1) 會是0,
而(vlax-safearray-get-l-bound intpoints 1) 會是5呢?
這個部分小弟看不懂....,能請師兄再補充說明嗎?
而(vlax-safearray-get-element intpoints 3) 是依據索引值取出陣列中元素的值,那其索引值是從0開始嗎?
謝謝
avatar
835
初級會員
初級會員

文章總數 : 34
年齡 : 39
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 2389
威望值 : 56
注冊日期 : 2012-01-02
藍鵲272號
男 處女座 馬

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2012-02-02, 14:03

抱歉!忙中有錯,寫顛倒了,造成你的困惑,不好意思,

回到交點有二個(1.0,2.0,0.0) (3.0,4.0,0.0),那intpoints裡會形成(1.0 2.0 0.0 3.0 4.0 0.0),串列中順序排列從 0 到 5,一共有六個元素.

(vlax-safearray-get-u-bound intpoints 1); 指的是取出1維陣列的頂部索引值,也就是5,

(vlax-safearray-get-l-bound intpoints 1); 指的是取出1維陣列的底部索引值,也就是0,

通常會用頂部索引值-底部索引值後再加1來求出陣列中到底有多少個元素.
例如: (5-0)+1=6
(vlax-safearray-get-element intpoints 3), 得到的值會是3.0

(vlax-safearray-get-element intpoints 0), 得到的值會是1.0

是的,索引值是自0開始.

你可以參考以下網址說明,

vlax-safearray-get-l-bound
http://www.mjtd.com/object/autolisp/ALR.default.370.htm

vlax-safearray-get-u-bound
http://www.mjtd.com/object/autolisp/ALR.default.371.htm

希望這次的說明有比較清楚.
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 835 于 2012-02-04, 07:52

感謝師兄ginse0727大大不厭其煩的說明,
我總算搞懂這幾個函數的用法了, 了解...
再一次致上十二萬分的謝意!! 感謝啦
avatar
835
初級會員
初級會員

文章總數 : 34
年齡 : 39
來自 : 台中
職業 : 工程
愛好 : 打球
個性 : 沈靜
使用年資 : 6
使用版本 : 2008
積分 : 2
經驗值 : 2389
威望值 : 56
注冊日期 : 2012-01-02
藍鵲272號
男 處女座 馬

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2012-02-05, 11:23

不客氣,教學相長,我其實也從修改程式中,學習到了新用法. 嘻嘻
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 Tiger&蘋果爸 于 2012-02-05, 14:27

ginse0727 寫到:不客氣,教學相長,我其實也從修改程式中,學習到了新用法. 嘻嘻
這部份對我們來說很深奧,謝謝你們的討論分享喔~
害羞

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17320
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65290
威望值 : 12862
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2012-02-06, 04:51

Tiger&蘋果爸 寫到:
ginse0727 寫到:不客氣,教學相長,我其實也從修改程式中,學習到了新用法. 嘻嘻
這部份對我們來說很深奧,謝謝你們的討論分享喔~
害羞
嘿!最重要就是要感謝蘋果爸啦!提供這麼一塊好的論壇,讚啦!!
還有眾位高手們無私的分享資源. 太帥啦
讓我在這裡學到了很多有用的技巧,
提出困惑已久的問題也有熱心的高手能幫忙解答,
更能和同好們討論一些問題,找出更好的解決方法,
沒事到這裡多晃晃,真的能在AutoCAD的學習上,少走很多的冤枉路.努力中
國外AutoCAD的論壇也不少,但礙於自己英文能力不佳,所以要獲得有幫助的資訊就比較辛苦, 感恩喔
希望顧問論壇可以一直的持續成長,造福我們有需要的人,提昇我們的競爭力!超開心
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 Tiger&蘋果爸 于 2012-02-06, 05:42

ginse0727 寫到:嘿!最重要就是要感謝蘋果爸啦!提供這麼一塊好的論壇,
還有眾位高手們無私的分享資源.
讓我在這裡學到了很多有用的技巧,
提出困惑已久的問題也有熱心的高手能幫忙解答,
更能和同好們討論一些問題,找出更好的解決方法,
沒事到這裡多晃晃,真的能在AutoCAD的學習上,少走很多的冤枉路
國外AutoCAD的論壇也不少,但礙於自己英文能力不佳,所以要獲得有幫助的資訊就比較辛苦,
希望顧問論壇可以一直的持續成長,造福我們有需要的人,提昇我們的競爭力!
是啊!
這正是建立論壇的初衷,因為互助力量大~
為了論壇能永續下去,大家請繼續一起加油吧~
微笑

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17320
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65290
威望值 : 12862
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

感恩!!!

發表 由 IT農夫 于 2012-04-27, 17:07

真是不錯的園地,我又成長了,感謝!!!
avatar
IT農夫
初級會員
初級會員

文章總數 : 24
年齡 : 47
來自 : 雲林
職業 : 資訊講師
愛好 : 程式設計
個性 : 熱情隨和
使用年資 : 12年
使用版本 : AutoCAD 2012
積分 : 1
經驗值 : 2387
威望值 : 12
注冊日期 : 2011-09-24
藍鵲18號
男 天蝎座 狗

回頂端 向下

在一次的成長囉!!!

發表 由 IT農夫 于 2012-04-27, 17:12

我總覺得這是一個相當難得的互動園地,大家要努力成長維持下去阿!!!
avatar
IT農夫
初級會員
初級會員

文章總數 : 24
年齡 : 47
來自 : 雲林
職業 : 資訊講師
愛好 : 程式設計
個性 : 熱情隨和
使用年資 : 12年
使用版本 : AutoCAD 2012
積分 : 1
經驗值 : 2387
威望值 : 12
注冊日期 : 2011-09-24
藍鵲18號
男 天蝎座 狗

回頂端 向下

回復: [討論]LISP 求交點

發表 由 zbato 于 2012-07-18, 10:05

每次來這裏都可以學習到新知識
avatar
zbato
初級會員
初級會員

文章總數 : 41
年齡 : 32
來自 : 台南
職業 : 會計
愛好 : 看電視
個性 : 普通
使用年資 : 1年多
使用版本 : 2006
積分 : 2
經驗值 : 3027
威望值 : 60
注冊日期 : 2010-03-26
藍鵲161號
女 獅子座 牛

回頂端 向下

回復: [討論]LISP 求交點

發表 由 lingo_st 于 2012-08-05, 08:01

喜歡來論壇除了可以挖到很多寶以外,大家的熱心協助溫馨感,跟腦力激盪後那種共同奮戰最後過關達陣的感受,這種革命情感也很吸引人,希望能有機會一職在這邊跟各位先進一起成長
avatar
lingo_st
中級會員
中級會員

文章總數 : 211
年齡 : 53
來自 : 新北市
職業 : 營造,建設
愛好 : 學習,服務,電腦軟硬體
個性 : 正直,達觀且無可救藥的雞婆
使用年資 : 使用12年但真的是新手
使用版本 : 2012,2013
積分 : 6
經驗值 : 3430
威望值 : 271
注冊日期 : 2011-12-18
經典問與答讀者 藍鵲238號
男 雙魚座 龍

回頂端 向下

回復: [討論]LISP 求交點

發表 由 蜜柑喵喵 于 2012-08-06, 03:17

我是初學者 請讓我向大大們學習 愛哭
LISP很多語法看不懂 頭暈目眩
avatar
蜜柑喵喵
一般會員
一般會員

文章總數 : 24
年齡 : 27
來自 : 台北
職業 : 學生
愛好 : 動漫
個性 : 隨和
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 2180
威望值 : 12
注冊日期 : 2012-04-30
女 摩羯座 蛇

回頂端 向下

回復: [討論]LISP 求交點

發表 由 ginse0727 于 2012-08-06, 10:50

這篇內容有比較進階,如果有心要學,妳可以先爬爬文,我記得蘋果爸還有明大大,有提供一個初階學習的網址,先從基礎的開始才不會破壞了學習的興趣.

順便貼了位址,方便妳連結.

http://www.autocad-tw.com/t5071-topic?highlight=lisp%E5%85%A5%E9%96%80

http://www.autocad-tw.com/t13664-topic?highlight=lisp


ginse0727 在 2012-08-06, 10:54 作了第 1 次修改 (原因 : 新增連結)
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4286
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [討論]LISP 求交點

發表 由 hhtsung 于 2012-09-27, 03:58

忘掉在那裡看到的一個函式,註解是試用改進後加上的
代碼:

;;Intersectwith是對VLAOBJ物件的方法,回覆交點串列
;; ee = acextendnone or 0 = 物件都不延伸
;;                      1 = 物件1延伸
;;                      2 = 物件2延伸
;;                      3 = 物件都延伸
(defun objinters (ent1 ent2 ee / IPTS PTS)
  (vl-load-com)
  (setq IPTS (vla-intersectwith
              (vlax-ename->vla-object ent1)
              (vlax-ename->vla-object ent2)
              ee
            )
        IPTS (vlax-variant-value IPTS)
  )
  (if (> (vlax-safearray-get-u-bound IPTS 1) 0)
    (progn
      (setq IPTS (vlax-safearray->list IPTS))
      (while (> (length IPTS) 0)
        (setq PTS (cons (list (car IPTS) (cadr IPTS) (caddr IPTS)) PTS)
              IPTS (cdddr IPTS)
        )
      )
    )
  )
  PTS
)
用法:
(setq en1 (cdr (assoc -1 (entget (car (entsel "\n選取物件一:"))))))
(setq en2 (cdr (assoc -1 (entget (car (entsel "\n選取物件二:"))))))
(objinters en1 en2 0)


hhtsung 在 2012-09-27, 04:39 作了第 1 次修改 (原因 : 忘了加用法)
avatar
hhtsung
初級會員
初級會員

文章總數 : 16
年齡 : 65
來自 : 新北市鶯歌區
職業 : 建築工程
愛好 : 攝影,寫程式,聽音樂
個性 : 內向,不喜歡運動,喜歡動腦
使用年資 : 18
使用版本 : 2008
積分 : 1
經驗值 : 2388
威望值 : 61
注冊日期 : 2011-10-20
男 金牛座 龍

回頂端 向下

1頁(共2頁) 1, 2  下一步

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章