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

haintwru

Thành viên
  • Số lượng nội dung

    6
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi haintwru


  1. 13 phút trước, Danh Cong đã nói:

    + Nhược điểm: Chỉ tạo ra line, không tạo ra được Polyline theo yêu cầu. ( Đang nghĩ cách để tạo polyline)

    Vậy nên nếu sử dụng  bạn nên đặt layer hiện hành là 1 layer mới , dùng lisp, rồi nối line thành polyline .

     

    (defun c:test ( / I J LISTPOINT NAME PT10 PT11 SSLIST SSOBJECT)
      (vl-load-com)
      (setq ssobject (ssget '(( 0 . "*LINE")))
        listpoint '()
        i 0
        j 0)
      (repeat (sslength ssobject)
              (progn
                (setq name (vlax-ename->vla-object (ssname ssobject i)))
                (setq pt10 (list (nth 0 (vlax-curve-getstartpoint name)) (nth 1 (vlax-curve-getstartpoint name)))
                  pt11 (list (nth 0 (vlax-curve-getendpoint name)) (nth 1 (vlax-curve-getendpoint name)))
                  i (+ i 1))
                (if   (< (cadr pt10) (cadr pt11))
                  (setq listpoint (append listpoint (list pt10)))   ; ok
                  (setq listpoint (append listpoint (list pt11)))   ; not ok
              )))
      (setq sslist (vl-sort-i listpoint     (function (lambda (e1 e2) (< (car e1) (car e2))))))
      (repeat (- (sslength ssobject) 1)
              (command ".line" "non" (nth (nth j sslist) listpoint) "non" (nth (nth (+ j 1) sslist) listpoint) "")
              (setq j (+ j 1))
        ); end repeat
         (princ))
     

    Cảm ơn bạn nhé. Như thế này cũng giúp giảm rất nhiều thời gian so với việc làm thủ công trước kia của mình ạ. 


  2. 6 phút trước, Danh Cong đã nói:

     Chỉ duy nhất trường hợp đặc biệt, hay là có ngoại lệ nào khác?

    + Vùng quét chọn là line:

    + Các line nằm song song với trục y.

    + Điểm nối là điểm thấp nhất của line?

      

    chào bạn, mình xin nói rõ hơn 1 chút là các đường trên là polynie song song vs trục y và điểm cần nối là điểm thấp nhất ạ. Cảm ơn bạn.

    • Vote tăng 1

  3. em có 1 đoạn lisp

    (defun c:bg (/)

    (setvar "cmdecho" 1)

    (setvar "cmdecho" 0)

    (command "undo" "be")

    (setq osmode (getvar "osmode"))

    (setvar "edgemode" 0)

     

    (setvar "osmode" 32)

    (setq ss (entsel))

    (setq diem (cadr ss))

    (setq pt (getPoint "\nChon diem be gay:"))

    (command "break" ss "f" pt pt)

     

    (setvar "osmode" osmode)

    (command "undo" "e")

    )

    các anh giúp em sửa nó để nó có thể chia đuợc nhiều đuờng giao với 1 đường khác. mình chỉ cần cọn 1 đường làm giao cắt và các đường khác khi cát nó đều bị chia ra tại điểm giao. các anh giúp em nhanh nhé :)

    • Vote giảm 1
×