Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
duongvanthuan

[ yêu cầu ] viết lisp vẽ line lấy giá trị từ text có sẵn

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

các bác có thể viết giùm mình một đoạn code theo yêu cầu này không vì mình là thành viên mới nên không am hiểu sâu vê lisp

- Nhập lệnh

- chọn điểm bắt đầu.

- chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng lên trên có chiều dài bằng giá trị TEXT,

- chọn giá trị khoảng cách theo phương ngang từ trái sang phải từ TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay)

- toàn bộ quá trình này được lặp lại như cũ.

- enter để kết thúc lệnh

cảm ơn các bác trước nha.

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

Chắc lại vẽ gióng trắc ngang. Trên 4room có nhiều giải pháp cho việc này lắm bạn ạ ^^

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

các bác có thể viết giùm mình một đoạn code theo yêu cầu này không vì mình là thành viên mới nên không am hiểu sâu vê lisp

- Nhập lệnh

- chọn điểm bắt đầu.

- chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng lên trên có chiều dài bằng giá trị TEXT,

- chọn giá trị khoảng cách theo phương ngang từ trái sang phải từ TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay)

- toàn bộ quá trình này được lặp lại như cũ.

- enter để kết thúc lệnh

cảm ơn các bác trước nha.

Hề hề hề,

Chả biết là tắc dọc hay trắc ngang hay là trắc ..... trở. Song nếu bạn klho6ng gửi bản vẽ thể hiện rõ cái đã có, cái yêu cầu và cái kết quả thì đành Hãy đợi đấy vậ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

Hề hề hề,

Đây là lisp mình nháp thử xem có đúng yêu cầu của bạn hay không. Lưu ý bạn là các text trong bảng thống kê của bạn phải được đặt tương đối thẳng hàng với nhau, chớ có nhảy lambada nhé. Mình không vẽ trắc dọc theo kiểu nhập từng nhát một như bạn vì như vậy thì có khi vẻ thẳng bằng tay nhanh hơn nhiều.

Lisp này yêu cầu bạn nhập vùng chọn tức là vùng chỉ chứa toàn các số liệu đã được sắp xếp thành bảng tương tự như cái bạn đã post. Các số liệu chiều cao và khoảng cách phải tương ứng với nhau trong bảng, nếu không lisp sẽ vẽ sai. Cách nhập số liệu đúng như cách nhập trong bảng mà bạn đã post. Nếu thay đổi cách nhập thì lisp cũng sẽ vẽ sai đấy.

Bạn hãy thử và cho biết ý kiến.


(defun c:vtd ( / oldos p1 p2 tm1 tm2 p0 cd kc sstl tl1 tl2 etm xlist ylst p h)
(vl-load-com)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "undo" "be")
(setq p1 (getpoint "\n Chon diem goc duoi ben trai bang so lieu")
        p2 (getpoint p1 "\n Chon diem goc ten ben phai bang so lieu")
        tm1 (car (entsel "\n Chon text cao do mau"))
        tm2 (car (entsel "\n Chon text khoang cach mau"))
        p0 (getpoint "\n Chon diem bat dau ve")
        cd (caddr (assoc 10 (entget tm1)))
        kc (caddr (assoc 10 (entget tm2)))
        sstl (acet-ss-to-list (ssget "w" p1 p2 (list (cons 0 "*text"))))
        tl1 (list)
        tl2 (list)
)
(foreach tm sstl
      (setq etm (entget tm))
      (if (equal cd (caddr (assoc 10 etm)) 0.1)
          (setq tl1 (append tl1 (list (list (cdr (assoc 10 etm)) (atof (cdr (assoc 1 etm))) ))))
      )
      (if (equal kc (caddr (assoc 10 etm)) 0.1)
          (setq tl2 (append tl2 (list (list (cdr (assoc 10 etm)) (atof (cdr (assoc 1 etm))) ))))
      )
)
(setq tl1 (vl-sort tl1 '(lambda (x y) (< (caar x) (caar y))))
        tl2 (vl-sort tl2 '(lambda (x y) (< (caar x) (caar y))))
        ylst (list)
        xlst (list 0)
)
(foreach y tl1
     (setq ylst (append ylst (list (cadr y))))
)
(foreach x tl2
     (setq xlst (append xlst (list (cadr x))))
)
(if (= (length ylst) (length xlst))
   (progn
          (setq n (length ylst) i 0 h (cadr p0))
          (command "pline" p0
                   (while (< i n)
                          (setq p (list (+ (car p0) (nth i xlst)) (+ h (nth i ylst)) 0.0) )
                          (command p)
                          (setq i (1+ i) p0 p)
                   )
                   (command "")
          )
     )
     (alert "\n So cao do va so khoang cach khong bang nhau. Hay kiem tra lai. ")
)
(command "undo" "e")
(setvar "osmode" oldos)
(Princ )                

)

Chúc bạn vui.

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

cảm ơn bác Thanh Bình Nhiều nhiều nha.

nhưng có điều lisp này khi chạy thì không có các đường dóng cao độ bác ơi

bác thêm cho mình các đường dóng cao độ nữa nhe.

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

cảm ơn bác Thanh Bình Nhiều nhiều nha.

nhưng có điều lisp này khi chạy thì không có các đường dóng cao độ bác ơi

bác thêm cho mình các đường dóng cao độ nữa nhe.

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

cảm ơn bác Thanh Bình Nhiều nhiều nha.

nhưng có điều lisp này khi chạy thì không có các đường dóng cao độ bác ơi

bác thêm cho mình các đường dóng cao độ nữa nhe.

Hề hề hề,

Thêm đường dóng cao độ, rồi thêm đường chuẩn, rồi thêm các text ghi khoảng cách và cao độ, rồi thêm ......... thoải mái phải không bạn????

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

Hề hề hề,

Thêm đường dóng cao độ, rồi thêm đường chuẩn, rồi thêm các text ghi khoảng cách và cao độ, rồi thêm ......... thoải mái phải không bạn????

đợi tin tốt từ bác thanh bình

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

.....

- chọn TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay), nó sẽ vẽ 1 đoạn thẳng đứng lên trên có chiều dài bằng giá trị TEXT,

- chọn giá trị khoảng cách theo phương ngang từ trái sang phải từ TEXT có sẵn trong bản vẽ (Hoặc có thể nhập tay)

.....

Mình nghĩ nếu bạn mà nhập số liệu từ đầu như trong bảng thì nên nhập trong nova đế xuất ra file số liệu ".ntd" thì chuyên nghiệp hơn dùng lisp (chắc bạn là dân cầu đường?).

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

Đăng nhập để thực hiện theo  

×