lee50310 发表于 2020-12-3 13:02:02

應網友要求寫了一個 十字路口生成器+道路修補功能

本帖最后由 lee50310 于 2020-12-15 10:43 编辑

應網友要求寫了一個 十字路口生成器+道路修補功能
這可花了我一個多月的休息時間,修修改改來完成
經反覆測試後效果還不錯,拿出來提供給有需要的人,
有在Autocad2010 及Autocad2018 測試過ok

1.顧名思義最低要求最少要繪出一個 (含一個)以上的十字路口才能形成道路,因此不管前面如何彎曲繞路最後只要有交叉形成一個十字路口都算符合規則能成道路,
若單獨畫一字路,ㄈ字形路,ㄇ字型 ,或頭尾相接口字型 ,ㄑ 字型等都不能形成道路
2.如果你的電腦夠強,只要符合規則,這個程式可連續轉彎交叉繞出許多十字路口,只須注意道路可轉彎交叉形成路口 路與路之間的平行或垂直若很靠近時須保持最小的間隔距離
不可重疊或部分重疊 ,但是十字路口可重疊,因此可在十字路口再繞過一個或二 個斜路形成三交或四交叉口(註:要整體一次繞完)只不過 這樣的三交四交叉路口中的殘留物須自行去除

3.使用(milne)雙線繪製道路,所以自由度很高滑鼠可拉長度,可控制方向 ,也可滑鼠控制方向長度用鍵盤輸入 ,因此配合 F8按鍵(垂直水平) 可繪製各種道路

4.指令 rd ,srd有兩種功能 1.繪製道路 2.補路 ,若是在既有的兩道路間繪出一條路視為補路,例在A路與B路之間補一條路,起始在A結束一定要在B 或者也可起始在A 結束在A (例 :在A補上ㄈ字形,ㄇ字型路)
在A路所補的道路 起始路寬線需在A道路外側線及內側線的範圍內在 B道路結尾路寬線亦同 ,因此只要在規定的範圍內便可在A,B之間 依照拉出的路寬 ,補出大小路

5.sld指令用於補路,當兩道路間有一條或多條從中穿越的道路時就必須用 sld 不能用rd 或srd
   使用sld指令 畫線取得 這些從中穿越道路的各路寬值,才能成功補路



再來說明指令:      rd功能: 1.繪製道路 2.補路(兩路間) 道路寬由滑鼠(按左鍵)1,2點決定 第3點拉出方向及距離 ,距離確定按滑鼠左鍵,完成道路按空白鍵
                  srd功能: 1.繪製道路 2.補路(兩路間) 道路寬由鍵盤輸入 其他功能同上
                  sld功能: 1.畫線取距離用於補路,(兩路間有一條或多條橫越道路)
                  std功能: 1.設定道路倒圓角參數 默認值 3, 設定畫線取路寬值容許誤差 默認值 0.02
                  prd功能: 1.顯示目前的道路寬值或經由sld指令取得的各段路寬值

                      修正 :道路完成後,讓視窗回到原工作畫面,因此在程式中
                              (pj ss4)      
                                 (sel_Fillet "地形地貌" kng)      
                              (command "zoom" "p")                            ;;顯示前一畫面範圍    << 新增此行>>
                              (RestoreVars)                                          ;;還原儲存的系統變數

                      原功能不變, 修正後為rd_chs_1, rd_cht_1



lee50310 发表于 2021-1-5 20:42:21

本帖最后由 lee50310 于 2021-1-11 10:33 编辑

这个有个BUG啊,如果与块交叉,会把块给打散了。
感謝告知 ,新版已做修正 ,無奈因論壇關係目前檔案及圖片我這邊都無法更新上傳 會出現檔案過大而失敗
因此付費版 請自行更改程式即可 更改方式如下:
    (defun Draw_the_road ()
          .
          .
(if (= (ssget "_P" (list (cons 8 "地形地貌")(cons 62 1))) nil) (setq t2 1) (setq t2 0));判斷 sal是否有含中心線 t2=1 未含 ,t2=0 有含
                (setq ss3 (ssget "C" pt1 pt2 ))                              ;;選取兩側道路線+中心線
                (command "_EXPLODE" ss3"" )                        ;;炸開
                (setq ss3 (ssget "C" pt1 pt2 ))                              ;;再選一次
                (setq ss4 (ssget "_P" (list (cons 8 "地形地貌")(cons 0 "LINE")))) ;;從ss3中再過濾只取線 *****
                (setq ss1 (ssget "_P" (list (cons 8 "地形地貌")(cons 62 1))))   ;選取中心線      

          .
          .

   );end

,<<<<***在下載的程式中找到上面的 函式只要更改上面程式中 if 下面的那一行   ***>>
                   (setq ss3 (ssget "C" pt1 pt2 ))                                                            ;;選取兩側道路線+中心線
                  將他改為過濾選取
                  (setq ss3 (ssget "C" pt1 pt2 (list (cons 8 "地形地貌")(cons 0 "LINE"))))      ;;選取兩側道路線+中心線
                  即可



lee50310 发表于 2023-4-13 23:02:15

本帖最后由 lee50310 于 2023-4-14 06:05 编辑

yangchao2005090 发表于 2021-5-27 10:15
赞一个,好像是以道路的边线上点位捕捉点画的,要是能改成道路中心线上点位捕捉点就完美了,不知道能否帮忙 ...
載入程式後
可在command 輸入 (1) 或(2)或 (3) 後按 Enter

(command "mline""j" "T" "");靠上畫線 (1)
(command "mline""j" "Z" "");置中畫線 (2)
(command "mline""j" "B" "");靠下畫線 (3)
(command "mline""j" "B" "");靠下畫線 (3)

;更改複線寬 (複線比例) 例: 10
(command "mline""S" "10" ""); 設置後可 執行CAD畫複線指令 Mline



你要置中選(2) 輸入 後在執行畫道路指令即可


lee50310 发表于 2023-4-13 22:50:58

本帖最后由 lee50310 于 2023-4-14 06:13 编辑

烟盒迷唇 发表于 2023-4-13 19:53
就像图片这样子,有些路消失了,或者提示错误
如果你要畫這樣道路 還有一個 方法可載入程式後執行一次指令rd
此時程式已將複線格式設置過
只要在command 輸入cad畫複線指令 mline 按enter
及可在螢幕繪製你動圖的畫法



;若要更改複線寬 (複線比例) 例: 15
(command "mline""S" "15" "")



執行cad畫複線指令:mline 即可畫 寬度為15的複線

xj6019 发表于 2020-12-3 13:12:42

谢谢分享优秀的工具

烟盒迷唇 发表于 2020-12-3 15:36:43

有用样条曲线画的嘛

crtrccrt 发表于 2020-12-3 17:33:57

本帖最后由 crtrccrt 于 2020-12-3 17:36 编辑

转换成简体CAD内文字也转换为简体

原件不收币,

简体收币一枚,不喜勿下!不喜勿下!不喜勿下!

panliang9 发表于 2020-12-4 08:58:51

好东西,收下了,谢谢!

p-3-ianlcc 发表于 2020-12-4 15:28:50

謝謝分享!
而且還有分簡體版、繁體版…好貼心,感恩!

w245272914 发表于 2020-12-4 15:44:02

LZ 是个有码德的人,还有简繁版本

999999 发表于 2020-12-4 17:27:30

顶起来,,支持支持

cyfdean 发表于 2020-12-4 21:20:58


顶起来,,支持支持

东升铮 发表于 2020-12-4 21:21:42

可以做成城市天际线(CAD小游戏)了:lol:lol
页: [1] 2 3 4
查看完整版本: 應網友要求寫了一個 十字路口生成器+道路修補功能