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

TranAnhTuong

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

    21
  • Đã tham gia

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

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


  1. Em đã có sẵn một lisp dùng để chia đoạn thẳng thành các đoạn thằng bằng nhau bằng cách nhập số đoạn hở giữa các đoạn thẳng và nhập khoảng cách khe hở giữa các đoạn thẳng đó. Nay em muốn nhờ các cao nhần giúp em chỉnh lại lisp này một chút. Thay vì đoạn nhập số khe hở và khoảng cách của khe hở giữa các đoạn thẳng thì lisp sẽ chèn thêm 1 đoạn thẳng với kích thước nhập vào thay cho phần nhập khoảng cách khe hở mà lisp trước em đã có. mong các cao nhân giúp đỡ ah! Dưới đây là lisp của em đang cần chỉnh sửa!

    cc Chia doan thang - so doan, khoang cach.lsp

    • Vote giảm 1

  2. Vào lúc 6/5/2013 tại 21:59, KangKung đã nói:

    Bạn dùng Lisp này xem đúng ý chưa. Lệnh CDT1 dùng để chia đường thẳng thành nhiều đoạn bằng nhau. Có thể quét chọn để chia hàng loạt đường thẳng cùng lúc. Lệnh CDT2 dùng để chia đường thẳng thành những đoạn có độ dài bằng khoảng cách nhập từ bàn phím. Khi kết thúc thì bấm Space hoặc Enter.

    
    
    ;LISP CHIA DUONG THANG THANH NHIEU DOAN BANG NHAU VA VE THANH POLYLINE
    
    (defun C:CDT1(/ taphop n i obj vlaobj d dt os)
    
      (command "UNDO" "BE")
    
      (setq os(getvar "OSMODE"))
    
      (setvar "OSMODE" 0)
    
      (setq taphop(ssget '((0 . "POLYLINE,LWPOLYLINE"))))
    
      (setq n(atoi(lisped "Nhap so doan can chia vao day")))
    
      (setq i 0)
    
      (while (< i (sslength taphop))
    
        (setq obj(ssname taphop i))
    
        (setq vlaobj(vlax-ename->vla-object obj))
    
        (setq d 0)
    
        (command "PLINE")
    
        (while (<= d (vla-get-length vlaobj))
    
          (command (vlax-curve-getPointAtDist obj d))
    
          (setq d(+ d (/ (vla-get-length vlaobj) n))))
    
        (command "")
    
        (setq dt(vlax-ename->vla-object (entlast)))
    
        (vla-put-linetype dt (vla-get-linetype vlaobj))
    
        (vla-put-LinetypeScale dt (vla-get-LinetypeScale vlaobj))
    
        (vla-put-lineweight dt (vla-get-lineweight vlaobj))
    
        (vla-put-color dt (vla-get-color vlaobj))
    
        (vla-put-layer dt (vla-get-layer vlaobj))
    
        (vla-delete vlaobj)
    
        (setq i (1+ i))
    
        )
    
      (setvar "OSMODE" os)
    
      (command "UNDO" "END")
    
      (princ)
    
      )
    
    ;LISP CHIA DUONG THANG THANH NHIEU DOAN BANG KHOANG CACH NHAP TU BAN PHIM
    
    (defun C:CDT2(/ obj vlaobj dt i S d os)
    
      (command "UNDO" "BE")
    
      (setq os(getvar "OSMODE"))
    
      (setvar "OSMODE" 0)
    
      (while (setq obj(car (entsel "\n Chon doan thang can chia: ")))
    
        (setq i 1 S 0 vlaobj(vlax-ename->vla-object obj))
    
        (command "PLINE" (vlax-curve-getPointAtDist obj 0))
    
        (while (setq d(getreal (strcat "\n Nhap chieu dai doan thu " (itoa i) ": ")))
    
          (if (<= (+ S d) (vla-get-length (vlax-ename->vla-object obj)))
    
    	(progn
    
    	  (setq S(+ S d))
    
    	  (command (vlax-curve-getPointAtDist obj S))
    
    	  (setq i(1+ i))
    
    	  )
    
    	(alert "Tong chieu dai vuot qua chieu dai ban dau")
    
    	)
    
          )
    
        (if (= d nil) (command (vlax-curve-getPointAtDist obj (vla-get-length (vlax-ename->vla-object obj)))))
    
        (command "")
    
        (setq dt(vlax-ename->vla-object (entlast)))
    
        (vla-put-linetype dt (vla-get-linetype vlaobj))
    
        (vla-put-LinetypeScale dt (vla-get-LinetypeScale vlaobj))
    
        (vla-put-lineweight dt (vla-get-lineweight vlaobj))
    
        (vla-put-color dt (vla-get-color vlaobj))
    
        (vla-put-layer dt (vla-get-layer vlaobj))
    
        (vla-delete vlaobj)
    
        )
    
      (setvar "OSMODE" os)
    
      (command "UNDO" "END")
    
      (princ)
    
      )
    

    Em cũng đang cần 1 LISP tương tự nhưng có thêm phần nhập khoảng cách khe hở giữa các đoạn thẳng. nhờ Anh giúp đỡ ah!

×