lee50310 发表于 2022-6-25 04:12:23

本帖最后由 lee50310 于 2022-6-26 12:25 编辑

可將找到24處懸空點表 再做 區分

(一) 單點懸空:在此點處無法找到其他物體 共3處有一種類型

(二)雙點懸空: 在此點處可互相找到另一懸空點 共 ˋ4 處(8點)有三種類型

(三)單點懸空+旁物(線):在此點處可找到另一線物體 共13處有二種類型

如圖所示:

lee50310 发表于 2022-6-25 04:28:20

本帖最后由 lee50310 于 2022-8-23 09:27 编辑

用 TT6.LSP 程式 便是將這 測試圖中的 24個 懸空點 取出這三個區分 ,但還未做處理


此為程式的中的部分程式碼
;;by lee50310 2022/0624
;;
(defun c:tt6( / ssd ss )
(vl-load-com)
    (makelayer "temp" 6)                                 ;;創建"temp"層 ,粉紅色
    (del_aid_circle)                                       ;;清除之前輔助圓
    (setq or_layer (getvar "clayer"))                      ;;取出目前工作層名
    (setq os (getvar "osmode"))
    (setvar "CMDECHO"0)   
      (command "UNDO" "BE")   

    (setq ssd (ssget '((0 . "arc,*line,ELLIPSE"))))
;;選擇集轉圖元表   
    (setq ss((lambda (x) (vl-remove(last x) x))(mapcar 'cadr(ssnamex ssd))))
    (or rrno1* (setq rrno1* 15.))
    (setq rr (getdist (strcat "\n輸入圓圈半徑:<" (rtos rrno1* 2) ">: ")))
    (if rr(setq rrno1* rr) (setq rr rrno1*))               
    (setq ael nil bel nil cel nil)
;;<-- allpts 全部懸空點 點表-->   
   (setq allpts(get_dangling_point))
   
;;<-- ael 單點懸空 點表-->   
   (setq ael(get_one_point allpts))
   (setq zzael(remove_pp ael allpts))                     ;;從點表中移除單點懸空
   
;;<-- bel 雙點懸空 點表-->   
   (setq bel(get_two_point zzael))                        
   (setq zel (append(mapcar 'car bel)(mapcar 'cadr bel)))
   
;;<-- cel (單點懸空+旁物) 點表-->   
   (setq cel(remove_pp zel cel))                        ;;從點表中移除雙點懸空   
   
   (command "zoom" "e")
   (command "zoom" "0.8x")
   (command "UNDO""end")
   (setvar "expert" 0)
   (setvar "osmode" os)
   (setvar "clayer" or_layer)
   
);end_defun_tt6
(princ "\n<<<***執行指令:tt6   ***>>>")
(princ)
;;----------------------------------------------------------------------------------
;;亮顯全部懸空數
(defun c:ppa()
(showpp allpts)
(princ "\n亮顯全部懸空數")
(princ)
)
;;----------------------------------------------------------------------------------
;;亮顯單點懸空數
(defun c:1pp()
(showpp ael)
(princ "\n亮顯單點懸空數")
(princ)
)
;;----------------------------------------------------------------------------------
;;亮顯雙點懸空數
(defun c:2pp()
(showpp zel)
(princ "\n亮顯雙點懸空數")
(princ)
)
;;----------------------------------------------------------------------------------
;;亮顯(點懸空+旁物)數
(defun c:1po()
(showpp cel)
(princ "\n亮顯(點懸空+旁物)數")
(princ)
)
;;----------------------------------------------------------------------------------
;;顯示懸空雙點之距離值
(defun c:2dst()
(princ "\n顯示懸空雙點之距離值= ")
(dist bel)
)
;;----------------------------------------------------------------------------------


lee50310 发表于 2022-6-25 04:58:54

本帖最后由 lee50310 于 2023-5-27 04:15 编辑

用法 執行指令:TT6 框選全部圖形 輸入圓半徑15 後程式就已將此懸空點轉換好了
之後在執行下列指令:

<亮顯 全部懸空點>      指令 ppa   在螢幕亮顯出24處   存放於變數 allpts 中查看方式在Command:!allpts

<亮顯 單點懸空>         指令 1pp     在螢幕亮顯出 3處    存放於變數 ael 中   查看方式在Command:!ael

<亮顯 雙點懸空>         指令 2pp     在螢幕亮顯出 4處(8點)    存放於變數 bel 中   查看方式在Command:!bel
                                    指令 2dst    兩懸空點距離值

<亮顯 單點懸空+旁物>指令 1po   在螢幕亮顯出 13處    存放於變數 cel 中 查看方式在Command:!cel



xuningxu 发表于 2022-6-25 10:31:33

学习一下 拓展新思路

依然小小鸟 发表于 2022-7-6 14:22:13

lee50310 发表于 2022-6-25 04:58
用法 執行指令:TT6框選全部圖形 輸入圓半徑15 後程式就已將此懸空點轉換好了

指令 ppa   在螢幕亮 ...

找到这些点之后可以 继续处理吗让线相交

lee50310 发表于 2022-7-6 17:56:48

依然小小鸟 发表于 2022-7-6 14:22
找到这些点之后可以 继续处理吗让线相交

區分成三種類型後 可 針對每個不同類型 做個別處理

依然小小鸟 发表于 2022-7-8 08:45:36

lee50310 发表于 2022-7-6 17:56
區分成三種類型後 可 針對每個不同類型 做個別處理

不太会编程:(

依然小小鸟 发表于 2022-8-21 12:04:12

lee50310 发表于 2022-6-25 04:58
用法 執行指令:TT6框選全部圖形 輸入圓半徑15 後程式就已將此懸空點轉換好了

指令 ppa   在螢幕亮 ...

有程序吗我用你发的代码 不能用呢

Dea25 发表于 2022-8-22 08:48:25

xinxirong 发表于 2022-6-14 11:00
首先这肯定是要绘图标准化,没有严格的标准,怎么交付给下一道工序呢?
其次,如果下一道工序接手的人如果 ...
点赞!
绘图都给不好,想依靠写程序来解决。不知道怎么想的。

liuhe 发表于 2022-8-23 08:52:42

xinxirong 发表于 2022-6-14 11:00
首先这肯定是要绘图标准化,没有严格的标准,怎么交付给下一道工序呢?
其次,如果下一道工序接手的人如果 ...

受教了 ,机械里面有一个±估计就是这个意思,学习
页: 1 2 [3] 4
查看完整版本: 如何实现线与线之间的真正相交?