HALUMGLASS@GMAIL.COM 1 Báo cáo bài đăng Đã đăng Tháng 5 14, 2021 ;Chuong trinh ve duong tam nhap thong so Celtscale theo y muon ;;;;;;;;;;;;;;;;;;;;; (defun c:lcen (/ HIENHANH CEL p1 p2) (setvar "cmdecho" 0) (setq HIENHANH (getvar "clayer")) (if (not (tblsearch "layer" "CENT1")) (command "layer" "m" "CENT1" "c" "1" "" "lt" "center" "" "") ) (setvar "clayer" "CENT1") (initget 7) (setq CEL (getint "\nNhap ty le CELTSCALE:")) (setvar "celtscale" cel) (setvar "ltscale" 1) (setq p1 (getpoint "\nNhap diem 1:")) (setq p2 (getpoint p1 "\nNhap diem 2:")) (entmake (list (cons 0 "LINE") (cons 8 (getvar "clayer")) (cons 10 p1) (cons 11 p2))) (setvar "cmdecho" 1) (setvar "clayer" HIENHANH) (princ) );end dedun Nhờ các bạn xem giúp mình, không biết lỗi gì mà sau khi thực hiện lệnh Lcen mà không trả (setvar "clayer" Hienhanh) không trả về layer ban đầu. tmp.lsp 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
cuongtk2 500 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Nếu bạn đã dùng entmake thì layer cũng tự sinh (nếu chưa có). Tuy nhiên không set color và linetype được. Layer mới là một clone của layer0. Vì vậy không cần phải đổi layer hiện hành. Đó là một ưu điểm của lisp mà các ngôn ngữ khác không làm được. 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
alisp 73 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Lỗi này không phải do lisp mà do bạn nhấn ESC khi đang còn trong lệnh khiến các câu lệnh cuối không có cơ hội làm việc. 1 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
cuongtk2 500 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Chính xác 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
HALUMGLASS@GMAIL.COM 1 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Khi dùng mình ko nhấn esc nhé. Trước khi dùng lệnh (setq hienhanh (getvar "clayer")) trả về layer 0 Vẽ line là đường tâm với layer "center" vẽ xong (setvar "clayer" hienhanh). Nhưng bản vẽ ko trả về layer "0" mà vẫn ở layer "center". Cuongtk2 chạy thử lisp xem lỗi do đâu xem hộ mình. Thanks 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
Doan Van Ha 3212 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Tôi chạy thử thấy OK và không hiểu sao nó không set lại "HIENHANH". @alisp và @cuongtk2: không thể esc kịp máy tính sau khi vẽ line đâ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
cuongtk2 500 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Bình thườ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
cuongtk2 500 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Bác nhầm rồi, sau khi setvar Clayer hủy lệ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
cuongtk2 500 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Em bị cái này suốt nên không dùng setvar nữa mà entmake trực tiếp cho đỡ lỗi này, và lỗi bắt điểm. 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
HALUMGLASS@GMAIL.COM 1 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Vậy ạ. Thế để mình xem lại. Không biết có xung đột gì với lisp khác không. Trước đó mình có sử dụng hàm *error* không biết có ảnh hưởng gì ko? Doan van ha chỉ giúp mình code lisp đưa tất cả thông số về ban đầu trước khi dùng lisp đc không? Ví dụ layer về layer ban đầu, var hệ thống ban đầu. Trên diễn đàn cũng có nói về vấn đề này rồi tuy nhiên mình muốn 1 cách tổng quát nhất để áp dụng cho tất cả các lisp. Thanks 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
cuongtk2 500 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 (defun c:lcen (/ HIENHANH CEL p1 p2) (defun makeLayer (name Col Ltyp LWgt Plot) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 name) (cons 70 0) (cons 62 Col) (cons 6 Ltyp) (cons 290 Plot) (cons 370 LWgt)))) (setq layer "CENT1") (if (not (tblsearch "layer" layer)) (makeLayer layer 1 "Center" 0 1) ) (setq CEL (getint "\nNhap ty le CELTSCALE:")) (setq p1 (getpoint "\nNhap diem 1:")) (setq p2 (getpoint p1 "\nNhap diem 2:")) (entmake (list (cons 0 "LINE") (cons 8 layer) (cons 10 p1) (cons 11 p2)(cons 48 CEL))) (princ) );end dedun 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
alisp 73 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 Cũng không cần viết lại lisp đâu bác, chỉ cần thêm một hàng này là đủ : (defun *error*(msg) (setvar "clayer" HIENHANH)) sau đó load vào rồi ESC thoải mái. Không riêng gì layer, nhiều người than phiền mất hết bắt điểm sau khi ESC, khi đó chỉ cần thêm dòng dư lày : (defun *error*(msg) (setvar "osmode" OsmodeBanDau)) là tha hồ ESC. 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
Doan Van Ha 3212 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 1 giờ} trướ}c, cuongtk2 đã nói: Bác nhầm rồi, sau khi setvar Clayer hủy lệnh. Khéo cãi. Người ta bảo "sau khi thực hiện lệnh" rồi 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
cuongtk2 500 Báo cáo bài đăng Đã đăng Tháng 5 15, 2021 1 giờ} trướ}c, Doan Van Ha đã nói: Khéo cãi. Người ta bảo "sau khi thực hiện lệnh" rồi mà. Dạ, vì bác bảo không thể ESC kịp sau khi vẽ line. Hoàn thành lệnh rồi thì ESC gì nữa. 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