ojacomarket Posted April 17, 2020 Posted April 17, 2020 (defun c:qwerty ( / *error* list_of_selections_1 l_o_s_1_length list_wcm number_1 entget_data_from_selection_1) (defun *error* (msg) (princ (strcat "\nError: " msg))) (setq list_of_selections_1 (ssget "x" (list (cons 0 "TEXT") (cons 8 "Mootkood") (cons 7 "Standard")))) (setq l_o_s_1_length (sslength list_of_selections_1)) (setq number_1 (- 0 1)) (setq number_2 (- 0 1)) (setq number_3 0) (setq list_wcm '((" vp" "INSERT" "VILJA1" "PUU") (" lp" "INSERT" "LEHTP1" "PUU") (" mand" "INSERT" "MAND1" "PUU") (" kkaev" "INSERT" "KAKAEV" "KKAEV") (" kaev" "INSERT" "TUKAEV" "KAEV") (" lm" "INSERT" "LIIKLM" "LIIKLUS") (" apost" "INSERT" "VARPOS" "AED") (" 1valgp" "INSERT" "VAPOST" "POST") (" tqmm" "INSERT" "ANKURP" "POST") (" 2valgp" "INSERT" "VAPOS2" "POST") (" tugi" "INSERT" "TUPOST" "POST") (" ppost" "INSERT" "PUPOST" "POST") (" bpost" "INSERT" "BEPOST" "POST") (" mpost" "INSERT" "MEPOST" "POST") (" plpost" "INSERT" "PLPOST" "POST") (" ekilp" "INSERT" "ELKAPP" "ELRAJATISMP") (" sikaev" "INSERT" "SIKAEV" "SIKAEV") (" gkaev" "INSERT" "GAKAEV" "GKAEV") (" gsiib" "INSERT" "GAKAPE" "GKAEV") (" skaev" "INSERT" "KAKAEV" "SKKAEV") (" rkaev" "INSERT" "REKAEV" "SKKAEV") (" vkaev" "INSERT" "VEKAEV" "VKAEV") (" vsiib" "INSERT" "VESIIB" "VKAEV") (" hydr" "INSERT" "THYDRM" "VKAEV") (" sokaev" "INSERT" "SOKAEV" "TKAEV") (" kivi" "INSERT" "KIVISU" "RELJEEF") (" kivih" "INSERT" "KIVIKU" "RELJEEF") (" pqq" "INSERT" "PQQSAS" "HALJASTUS") )) (repeat l_o_s_1_length (setq number_1 (1+ number_1)) (setq entget_data_from_selection_1 (entget (ssname list_of_selections_1 number_1))) (foreach xx list_wcm (setq a1 (car xx)) (if (wcmatch (cdr (assoc 1 entget_data_from_selection_1)) a1) (entmake (list (cons 0 (cadr xx)) (cons 2 (caddr xx)) (cons 8 (nth 3 xx)) (cons 10 (cdr (assoc 11 entget_data_from_selection_1))) (cons 41 0.5) (cons 42 0.5) (cons 43 0.5) (cons 50 0.0)))))) (setq list_wcm_wcm '((" h#" "LINE" "HOONEKP" "HOONE") (" hdet#" "LINE" "HOONEKP" "HOONEDET") (" a#" "LINE" "ASFBET" "TEE") (" b#" "LINE" "ASFBET" "TEE") (" ak#" "LINE" "AAREKIVI" "TEE") (" kr#" "LINE" "KRUUSKILL" "TEE") (" hek#" "LINE" "HEKK" "HALJASTUS") (" kolv#" "LINE" "KOLVIK" "HALJASTUS") (" tm#" "LINE" "KOLVIK" "RELJEEF") (" nall#" "LINE" "NOLVAALL" "RELJEEF") (" npeal#" "LINE" "NOLVAPEAL" "RELJEEF") (" r#" "LINE" "RAJATISP" "RAJATIS") (" paed#" "LINE" "LA_AED" "AED") (" maed#" "LINE" "RAKAED" "AED") (" vaed#" "LINE" "VO_AED" "AED") (" avund#" "LINE" "AIAVUND" "AED") (" myyr#" "LINE" "MYYR" "AED") (" kiviaed#" "LINE" "KIVIAED" "AED") )) (repeat l_o_s_1_length (setq number_2 (1+ number_2)) (setq number_3 (1+ number_3)) (setq entget_data_from_selection_2 (entget (ssname list_of_selections_1 number_2))) (setq entget_data_from_selection_3 (entget (ssname list_of_selections_1 number_3))) (foreach xxx list_wcm_wcm (setq a2 (car xxx)) (if (and (and (wcmatch (setq obj_1 (cdr (assoc 1 entget_data_from_selection_2))) a2) (wcmatch (setq obj_2 (cdr (assoc 1 entget_data_from_selection_3))) a2)) (= obj_1 obj_2)) (progn (entmake (list (cons 0 (cadr xxx)) (cons 6 (caddr xxx)) (cons 8 (nth 3 xxx)) (cons 10 (cdr (assoc 11 entget_data_from_selection_2))) (cons 11 (cdr (assoc 11 entget_data_from_selection_3))))) (setq ssget_for_join (ssget "x" (list (cons 6 (caddr xxx)) (cons 8 (nth 3 xxx))))) (setq join_1 (apply 'command (list "pedit" "m" ssget_for_join "" "y" "j" 0 "")))))) ;(setq fillet_1 (apply 'command (list "fillet" ) ) What does that code? That code takes objects from particular layer and CHECKS it with pattern (list_wcm and list_wcm_wcm) I works good, but I have two issues that I would like to fix: I surveyed points with different names (cons 1), but I roughly follow the rule: "if I want object to be drawn as single line I should use the same survey-code, which is expressed in CAD as (cons 1 ;;code;;) sooooo >>>let's assume I have objects with (cons 1 "h") on my drawing<<< So on my drawing even if objects got the same 1-DXF code (like "h1") they will join only following my trace, which has been maken outside when surveyed, BUT I want it to join EVERY object that have THE same 1-dxf code, no matter where it is located in a drawing.. hope you got the idea, cuz it quite complicated to explain, sorry guys Second issue is that I want to fillet every object with specified LAYER (using wcmatch for that, I guess..), object - is polyline and condition is that if lines are related to each other at angle 90 degress (+/- 15 degrees) THEY WILL join with FILLET I actually trying right now to accomplish the first task.. Big thanks for helping every time!! Quote
Jonathan Handojo Posted April 18, 2020 Posted April 18, 2020 14 hours ago, ojacomarket said: So on my drawing even if objects got the same 1-DXF code (like "h1") they will join only following my trace, which has been maken outside when surveyed Don't use wcmatch then. 1 Quote
BIGAL Posted April 18, 2020 Posted April 18, 2020 1st option is known as using survey code stringing its built in to any decent civil software. EB01 & EB02 are two edge of road strings and the string numbers are different so they do not join all "EB" together in order of survey but rather only the corresponding EB+string number are joined. A string TR is ok so is TR00 the double zero meaning its a point. in this case a Tree so for us TR03*6 is a tree with a 0.3 trunk and a 6m dia spread and we use a dynamic block for you step3. Ok how to make it work rather than get spaghetti appear, is you need to do a double sort on your original point data, so you sort on codes 1st then sub sort on point number, this way your points would be EB01 EB01 EB01 EB01 EB02 EB02 EB02 EB02 and so on. The field survey is normally done in some type of pattern. What about F01*F23 this is a junction of two fences so the front fence is 01 and each side fence has its own number, the guys at my ex work have like 30 + years doing this. Not sure about the fillet but you can fillet all vertices of a pline in one go using standard Autocad. #VERSION-1.0 NEUTRAL FILE NOTE TRANSLATOR: TOPGTS7 vers B.02 JOB D:\JETTY, UNIT UL=M, UA=S DATE 21/04/98,10:06:13 STN ID=9901,HI=1.611,CO=000027 XYZ E=1000.000,N=5000.000,H=100.000 BKB ID=101,AZ=0.0000,HA=359.5959 SS ID=1000,HA=127.1242,VA= 87.2356,SD=12.413,HT=1.492,CO=011418 SS ID=1001,HA=125.0110,VA= 87.2701,SD=13.232,HT=1.492,CO=011418 SS ID=1002,HA=126.4942,VA= 87.3533,SD=20.441,HT=1.492,CO=011418 SS ID=1003,HA=116.3524,VA= 87.5545,SD=18.398,HT=1.492,CO=011509/BIK SS ID=1004,HA=108.4050,VA= 87.5812,SD=17.657,HT=1.492,CO=011509/BIK SS ID=1005,HA=112.0332,VA= 87.2513,SD=33.674,HT=1.492,CO=011418 SS ID=1006,HA=106.3032,VA= 87.2131,SD=45.597,HT=1.492,CO=011418 SS ID=1007,HA=104.4313,VA= 87.2505,SD=48.259,HT=1.492,CO=011418 SS ID=1008,HA=104.4551,VA= 87.2450,SD=48.327,HT=1.492,CO=011903 SS ID=1009,HA= 87.3849,VA= 87.5758,SD=47.522,HT=1.492,CO=011903 SS ID=1010,HA= 71.4945,VA= 88.0721,SD=50.904,HT=1.492,CO=011903 SS ID=1011,HA= 61.1527,VA= 88.2157,SD=55.784,HT=1.492,CO=011903 SS ID=1012,HA= 58.1437,VA= 88.2857,SD=57.775,HT=1.492,CO=011903 SS ID=1013,HA= 57.4504,VA= 88.2908,SD=58.083,HT=1.492,CO=011903 SS ID=1014,HA= 62.0048,VA= 88.1149,SD=64.650,HT=1.492,CO=011903 SS ID=1015,HA= 50.5948,VA= 88.5022,SD=63.934,HT=1.492,CO=001104 SS ID=1016,HA= 41.3130,VA= 89.1916,SD=74.887,HT=1.492,CO=001104 Quote
hanhphuc Posted April 19, 2020 Posted April 19, 2020 (edited) On 4/18/2020 at 2:35 AM, ojacomarket said: issue is that I want to fillet every object with specified LAYER (using wcmatch for that, I guess..), object - is polyline and condition is that if lines are related to each other at angle 90 degress (+/- 15 degrees) THEY WILL join with FILLET recently there was discussion about bulge/fillet http://www.theswamp.org/index.php?topic=55931.0 look at ripp-bulge -- Radius-InterPoint-startPoint-endPoint ... if center is unknown, but known = radius , vertex (Intersection point) , p1 , p2 (note: vertex =/= center)returns list (start-bulge-end)like fillet method (can be applied trans on 3Dpoly as well) Edited April 20, 2020 by hanhphuc 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.