Chuyển đến nội dung
Diễn đàn CADViet
doductiep

Lấy tọa độ bên phải pline và bên trái pline từ điểm phân chia

Các bài được khuyến nghị

Có một đường pline,  chọn 1 điểm trên đường pline đó để phân pl thành 2 đoạn bên trái và phải (mặc định điểm chỉ chia pline thành 2 đoạn ở 2 phía)

Nhờ các bác bày cho hướng  để xuất ra tọa độ các điểm trên pl đó tách riêng bên phải  - bên trái điểm chọn (có thể ghi ra 2 file text khác nhau hoặc ghi bên trước, 1 bên sau)

nếu được cho mình xin đoạn code để ăn xổi thì tốt quá ^^. Cảm ơn mọi người!

 

 

 

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Code thì có , còn ghi ra đâu là tùy bạn nhé: @@

 

(defun C:LTD (/ dtpl point sset pt1)
(setq dtpl (entsel "\nChon Polyline"))
(setq Point (getpoint "\nPick Point"))

(setq toadopl (reverse (laytoado dtpl)))
(setq toadotrai '()
      toadophai '())
(foreach pt1 toadopl
      (progn
          (if    (< (car pt1) (car Point))
              (setq toadotrai (append toadotrai (list pt1)))
              (setq toadophai (append toadophai (list pt1)))
          ); end if
    ); end progn
  ); end foreach

  (princ)
)
;;;;***********************************************************************************************
(defun laytoado (sset / hnd ent obj lsttd toado)
    (setq hnd (car sset))
    (setq ent (entget hnd))
    (setq obj (cdr (assoc 0 ent)))
                (cond
                  ((= obj "LWPOLYLINE")
                    (foreach rec ent
                      (if (= (car rec) 10)
                        (progn
                          (setq pnt (cdr rec))
                          (setq toado (list (car pnt) (cadr pnt)))
                          (setq lsttd (cons toado lsttd))
                        )))))
    lsttd
)

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
2 giờ trước, Danh Cong đã nói:

Code thì có , còn ghi ra đâu là tùy bạn nhé: @@

 

(defun C:LTD (/ dtpl point sset pt1)
(setq dtpl (entsel "\nChon Polyline"))
(setq Point (getpoint "\nPick Point"))

(setq toadopl (reverse (laytoado dtpl)))
(setq toadotrai '()
      toadophai '())
(foreach pt1 toadopl
      (progn
          (if    (< (car pt1) (car Point))
              (setq toadotrai (append toadotrai (list pt1)))
              (setq toadophai (append toadophai (list pt1)))
          ); end if
    ); end progn
  ); end foreach

  (princ)
)
;;;;***********************************************************************************************
(defun laytoado (sset / hnd ent obj lsttd toado)
    (setq hnd (car sset))
    (setq ent (entget hnd))
    (setq obj (cdr (assoc 0 ent)))
                (cond
                  ((= obj "LWPOLYLINE")
                    (foreach rec ent
                      (if (= (car rec) 10)
                        (progn
                          (setq pnt (cdr rec))
                          (setq toado (list (car pnt) (cadr pnt)))
                          (setq lsttd (cons toado lsttd))
                        )))))
    lsttd
)

Cảm ơn bác nhiều!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tiện thể các bác cho hỏi làm sao lấy khoảng cách giữa 2 điểm  theo trục ngang hoặc theo trục đứng?

Thông thường với 2 điểm (x1 y1) , (x2 y2) mình phải làm thủ công là tách x và y của 2 điểm ra , nếu tính khoảng cách theo trục x thì cho y bằng 0, chỉ giữa lại x, sau đó dùng hàm :  : distance (x1 0) (x2 0)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
15 phút trước, doductiep đã nói:

Tiện thể các bác cho hỏi làm sao lấy khoảng cách giữa 2 điểm  theo trục ngang hoặc theo trục đứng?

Thông thường với 2 điểm (x1 y1) , (x2 y2) mình phải làm thủ công là tách x và y của 2 điểm ra , nếu tính khoảng cách theo trục x thì cho y bằng 0, chỉ giữa lại x, sau đó dùng hàm :  : distance (x1 0) (x2 0)

A (x1, y1); B (x2, y2);

Code

(setq kc_x (abs (- (car A) (car B)))

(setq kc_y (abs (- (cdr A) (cdr B)))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ trước, Danh Cong đã nói:

A (x1, y1); B (x2, y2);

Code

(setq kc_x (abs (- (car A) (car B)))

(setq kc_y (abs (- (cdr A) (cdr B)))

Cảm ơn bác với  chỉ có 2 dòng mình mới tập tành lisp nên nhiều khi thủ công quá :)))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, hiepttr đã nói:

@doductiep: Hình như bạn đang nghịch gì đó với trắc ngang thì phải^^
Đưa hẳn vấn đề ra luôn đê :D

 

Ặc ặc. bác thính thế. Mình đang tạo lisp xuất cao độ - khoảng cách lẻ từ trắc ngang có sẵn ra excel 

Lần trước thấy bác Nguyenthanhduan có 1 cái rất hay nhưng hình như  nó kết hợp cả quản lý đối tượng của TDT cả có phí nên mình tự lập, hơi thủ công tí nhưng hàng mình làm, ngon thì ăn ngon, cháy thì ăn cháy ^^

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×