วันจันทร์ที่ 21 มีนาคม พ.ศ. 2565

Point to Circle and Circle to Point

 

;;Point to Circle and Circle to Point

(defun c:p2c ( / e i s )

;;-------------Input Radial-------------------------   

       (or rd (setq rd 0.2))

        (setq rdtemp

            (getDist (strcat "\nEnter Radial : <"

                             (rtos rd 2 3)

                                     ">: "

                     ) ;_ strcat

            ) ;_ getint

        ) ;_ setq

    (and rdtemp (setq rd rdtemp))

;;---------------------------------------------------

       (if (setq s (ssget '((0 . "POINT"))))

        (repeat (setq i (sslength s))

            (setq e (ssname s (setq i (1- i))))

            (if (entmake

                                  (list '(0 . "CIRCLE")

                                            (assoc 10 (entget e))

                                            (cons 40  rd)

                                  )

                           )

                           (entdel e)                 

                     )

        )

    )

    (princ)

)

(defun c:c2p ( / e i s )

    (if (setq s (ssget '((0 . "CIRCLE"))))

        (repeat (setq i (sslength s))

            (setq e (ssname s (setq i (1- i))))

            (if (entmake

                                  (list '(0 . "POINT")

                                            (assoc 10 (entget e))

                                  )

                           )

                           (entdel e)

                     )

        )

    )

    (princ)

)

วันอาทิตย์ที่ 13 มีนาคม พ.ศ. 2565

Polyline Dimensions

(defun c:pdim(/ plSet pLlst vLst vLst0 vLst1 oldOsn cAng cDis cPt index)

(princ "\n<<< Select LwPolyline for dimensioning >>> ")

(if(setq plSet(ssget '((0 . "LWPOLYLINE"))))

      (progn

            (setq index -1

                    oldOsn(getvar "OSMODE")

            )

            (setq pLlst(vl-remove-if 'listp (mapcar 'cadr(ssnamex plSet))))

            (setvar "OSMODE" 0)

            (setvar "CMDECHO" 0)

            (foreach pl pLlst

                  (setq vLst(mapcar 'cdr (vl-remove-if-not '(lambda(x)(= 10(car x)))(entget pl))) 

                          reg (ssname plSet (setq index (1+ index)))

                  ); end setq

                  ;(print vLst) ;original points list

                  (if (and(= (car (nth 0 vLst))(car (nth (1- (length vLst)) vLst)))

                              (= (cadr (nth 0 vLst))(cadr (nth (1- (length vLst)) vLst)))

                        )

                        (setq vLst1 vLst)

                        ;(progn

                              (if (= (cdr (assoc 70 (entget reg))) 1)

                                    (progn                                   

                                          (setq vLst1 vLst)

                                          (setq vLst0 (list (car(nth 0 vLst))(cadr(nth 0 vLst))))

                                          (setq vLst1 (reverse (cons vLst0 (reverse vLst1))))

                                    )

                                    (setq vLst1 vLst)

                              )

                        ;)

                  )

                  ;(print vLst1) ;after check points list

                  (while(< 1(length vLst1))

                        (setq cAng(angle(car vLst1)(cadr vLst1))

                                cDis(/(distance(car vLst1)(cadr vLst1))2)

                                cPt(polar (polar(car vLst1)cAng cDis) (+ cAng(/ pi 2)) (* 2 (getvar "DIMTXT")))

                        ); end setq

                        (command "_.dimaligned"(car vLst1)(cadr vLst1) cPt)

                        (setq vLst1(cdr vLst1))

                  ); end while

            ); end foreach

            (setvar "OSMODE" oldOsn)

            (setvar "CMDECHO" 1)

    ); end progn

); end if

(princ)

); end of c:pdim


วันอาทิตย์ที่ 6 มีนาคม พ.ศ. 2565

การใช้งาน Road_Cc.lsp



การใช้งาน Road_Cc.lsp

    Revision Cc

-      เลือกแนวทิศทางถนนที่ต้องการ
-      ถ้าถูกต้องแล้วเลือก 1 No.
-     ถ้าต้องการกลับด้านทิศทางเริ่มต้นเลือก 2 Reverse แล้วเลือกแนวถนนเพื่อทำการกลับด้านทิศทางใหม่

1.    Select Massage Options เลือกข้อความที่ต้องการ

-      กม.

-      Km.

-      Enter (กำหนดข้อความเอง)

-      None (ไม่ต้องแสดงข้อความ)

2.    Enter Start Kilometer at. <0.000> กำหนดหลักกิโลเมตรที่จุดเริ่มต้น

3.   Enter Distance : <500.0> กำหนดระยะห่างของหลักกิโล

4.    Select Line to measure: เลือกเส้นแนวถนน จะมี ป๊อปอัพ แสดงความยาวของเส้นถนน

5.    เมื่อกด OK ที่ป๊อปอัพ ก็จะแสดงหลักหมุดพร้อมเลขกำกับหลักกิโล

6.    กรณีที่เรา Enter Start Kilometer at. <1.850> กำหนดหลักกิโลเมตรที่จุดเริ่มต้นต่อจากหลักกิโลอื่นที่ไม่ได้เริ่มต้นที่ 0.000 เช่น 1.850 ต่อจากเส้นถนนเดิม


7.     เราต้องทำการ Select Line to Break Point: เป็นการตัดเส้นถนนส่วนที่เหลือให้ลงตัวพอดีกับระยะหลักกิโลที่กำหนด โดยเลือกไปยังเส้นถนน 

8.    จากนั้นก็ทำการเลือกเส้นถนน  Select Line to measure: ส่วนที่ได้ทำการ Break Point ไว้แล้วจะมี ป๊อปอัพ แสดงความยาวของเส้นถนน

9.    เมื่อกด OK ที่ป๊อปอัพ ก็จะแสดงหลักหมุดพร้อมเลขกำกับหลักกิโล 


The end.

แก้ไขข้อความตั้งฉากกับแนวถนนใหม่ใน Revision Road_Cc





วันเสาร์ที่ 5 มีนาคม พ.ศ. 2565

Import Coordinate and Generate Contour.


 Import Coordinate and Generate Contour. (Generate_Contour_b.VLX)

ตัวโปรแกรม CONTR จะประกอบด้วย 3 ส่วนด้วยกัน ดังรูปตัวอย่าง

      1. ตัวนำเข้า Import Coordinate จากไฟล์ Excel .CSV

      2. ตัวสร้างเส้น Generate Contour line

      3. ตัวบอกระดับความสูงของเส้น Generate Contour lables

1. ตัวนำเข้า Import Coordinate จากไฟล์ Excel .CSV เมื่อเราเลือกให้นำเข้าข้อมูลจากไฟล์ Excel .CSV แล้วเลือกที่ File…

                1.1 ทำการเลือกไฟล์ Select Excel .CSV File

รูปแบบข้อมูลของไฟล์ Excel .CSV มีดังนี้

เซล A เป็นหมายเลขลำดับ No.

เซล B เป็น Coordinate N (y)

เซล C เป็น Coordinate E (x)

เซล D เป็น Descriptions รายละเอียดกำกับ *** จำเป็นต้องมีอย่างน้อย 1 เซล

      1.2 ช่องแสดงตำแหน่งที่อยู่ของไฟล์ที่เราทำการเลือกเอาไว้

 

2. Generate Contour line เป็นการสร้างเส้น Contour จากการ Import Coordinate หรือจาก Coordinate Points ที่สร้างไว้แล้วโดยการครอบ Points ทั้งหมด

      2.1 Minor Contour Interval ระยะของเส้นรอง โดยเลือกจาก list ที่กำหนดให้

      2.2 Major Contour Every ระยะของเส้นหลัก โดยเลือกจาก list ที่กำหนดให้

    

2.3 Contour Smoothing Factor ปรับความละเอียดของเส้นตาม list ที่กำหนดให้ 

2.4 และ 2.5 Major and Minor Contour Color ปรับเปลี่ยนสีของเส้น Major และเส้น Minor ตาม Index Color

3. ตัวบอกระดับความสูงของเส้น Generate Contour lables

เป็นการบอกระดับความสูงของเส้น Major and Minor Contour line ทั้งสองเส้น

The End.

วันจันทร์ที่ 28 กุมภาพันธ์ พ.ศ. 2565

Edit Left and Right Cross-Section Distance

 


;|    

      Edit Left and Right Cross-Section Distance

Designed and Created February 2022

      - Options Decimal

      - Add Number Bank(Taling)

      - Select object   

|;

(defun c:EDTD (/ ddata)

(setq old_dimzin (getvar "dimzin"))

(setvar "dimzin" 4)

;-----------------------------------

(initget "0 0.0 0.00 0.000")

      (setq opt0 (getkword "\nOptions Decimal \n [  0 /  0.0 /  0.00 /  0.000 ] : <0> "))

      (if (= opt0 "") (setq opt0 "0"))

      (cond

            ((if (= opt0 "0")  (setq dec 0))) ;decimal 1

            ((if (= opt0 "0.0")  (setq dec 1))) ;decimal 1

            ((if (= opt0 "0.00")  (setq dec 2))) ;decimal 2

            ((if (= opt0 "0.000")  (setq dec 3))) ;decimal 3

      ); setq

;(setq dec 3)     

;--------------------------------------

      (if (not addon) (setq addon 59.0))

      (setq txtMtemp

            (getdist (strcat "\nAdd Number Bank(Taling) : <"

                            (rtos addon 2 dec)

                                     "> : "

                                          ) ;_ strcat

            ) ;_ getdist

      ) ;_ setq

      (if (not txtMtemp) (setq txtMtemp addon) (setq addon txtMtemp))

;-----------------------------------

      (princ "Select object (window) :")

      (if (setq dimss (ssget ":L" '((0 . "TEXT,MTEXT"))))

            (progn

                  (setq c -1)

                  (repeat (sslength dimss)

                        (setq ddata (entget (ssname dimss (setq c (1+ c))))

                                str (atof (cdr (assoc 1 ddata)))

                        )

                        (setq ddata (subst

                                                (cons 1 (if (= str addon)

                                                                  (if(= dec 0)(rtos 0.0 2 dec)            ;0

                                                                        (strcat "0"(rtos 0.0 2 dec))  ;0.0 0.00 0.000

                                                                  )

                                                                  (rtos (- str addon)2 dec)

                                                            )

                                                )

                                                (assoc 1 ddata)

                                                ddata

                                          ); subst

                        ); setq

                        (entmod ddata)

                  )

            );progn

      )    

(setvar "dimzin" old_dimzin) 

(princ)

); defun

(prompt "\nCreate and Design by SONGKHRAN JONGKUL February 2022")

(prompt "\nEnter EDTD to start. ")

วันพุธที่ 23 กุมภาพันธ์ พ.ศ. 2565

Add message Text or Dimension

 

;|     

       Add message Text or Dimension

       - Add message

       - front / behind

|;

(defun c:ADTD (/ dimss c ddata); = Dimension Text:

;-----------------------------------

       (if (or (not addon) (/= (type addon) 'STR)) (setq addon "เมตร"))

       (setq txtMtemp

              (getstring T (strcat "\npecify text to add message <"

                             addon

                                     "> : "

                                                ) ;_ strcat

              ) ;_ getdist

       ) ;_ setq

       (if (= txtMtemp "") (setq txtMtemp addon) (setq addon txtMtemp))

;-----------------------------------

(initget "front behind")

       (setq opt0 (getkword "\nAdd message \n[ front / behind ] : <front> "))

       (if (= opt0 "") (setq opt0 "front"))

       (setq dimss (ssget ":L" '((0 . "MTEXT,DIMENSION")))

                c -1

                dec 2 ;decimal

       ); setq

       (repeat (sslength dimss)

              (setq ddata (entget (ssname dimss (setq c (1+ c)))))

              (print (cdr (assoc 0 ddata)))

              (print addon)

              (cond

                     ((= (cdr (assoc 0 ddata)) "DIMENSION")    

                           (setq ddata (subst

                                                       (cons 1 (if (= opt0 "front")(strcat addon(rtos (cdr (assoc 42 ddata))2 dec))

                                                                                  (strcat (rtos (cdr (assoc 42 ddata))2 dec)addon)

                                                                     )

                                                       )

                                                       (assoc 1 ddata)

                                                       ddata

                                  ); subst & adjusted ddata

                           ); setq

                           (entmod ddata)             

                     );if

                     ((= (cdr (assoc 0 ddata)) "MTEXT")

                           (setq ddata (subst

                                                       (cons 1 (if (= opt0 "front")(strcat addon(cdr (assoc 1 ddata)))

                                                                                  (strcat(cdr (assoc 1 ddata)) "" addon)

                                                                     )

                                                       )

                                                       (assoc 1 ddata)

                                                       ddata

                                                ); subst & adjusted ddata

                           ); setq

                           (entmod ddata)

                     );if

              )

       ); repeat

       (princ)

); defun

(prompt "\nEnter ADTD to start. ")