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
首先这肯定是要绘图标准化,没有严格的标准,怎么交付给下一道工序呢?
其次,如果下一道工序接手的人如果 ...
受教了 ,机械里面有一个±估计就是这个意思,学习