-
Số lượng nội dung
1.387 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
117
Bài đăng được đăng bởi Danh Cong
-
-
Chỉnh sửa Code Lisp
trong AutoLisp
Diễn đàn đầy lisp "pick vào hình kín và tính diện tích luôn", cớ sao không tìm , mà lại mất công nhờ người sửa chữa cho mệt ?
-
1 giờ} trướ}c, AutoTay.com đã nói:Dạ, cũng không được luôn ạ. VNARIAL_0.TTF hay VNARIAL.TTF cũng không được.
+ Sao đường dẫn thư mục của bạn này lại dài loằng ngoằng thế :)))))
Tôi tưởng nó gọn thế này thôi @@: C:\Windows\Fonts
+Font .TTF là font dành cho Win. Nên việc copy vào trong font cad thì cũng .... hơi thừa thì phải .
- 1
-
8 giờ trước, 790312 đã nói:e chưa nghĩ ra được cách nếu nhập số lượng điểm thì sẽ xử lý như thế nào? nên e chỉ cần lisp để nhập chiều dài và góc cho từng đoạn thẳng một bác ah. Bác có ý tưởng gì để xử lý vấn đề này nhanh hơn không? Cảm ơn bác nhiều.
+ Thử cái này nhé:
(defun c:DC (/ ANG ANG1 L P1 P2)
(setq P1 (getpoint "\nPick first Point:")
P2 (getpoint P1 "\nPick second Point:")
Ang (angle P1 P2))
(while (and (setq Ang1 (getreal "\nInput Angle:"))
(setq L (getreal "\nInput Lenght:")))
(command ".line" "non" P1 "non" (polar P1 (- Ang (* pi (/ Ang1 180))) L) ""))
(princ))- 1
-
45 phút trước, 790312 đã nói:Đúng vậy, sau bước 3 sẽ là: chọn điểm bắt đầu rồi tới bước 4. Lisp này mình cần vì mình cần nhập rất nhiều điểm xuất phát từ 1 điểm nhưng có chiều dài và góc khác nhau. Mong nhận được sự giúp đỡ của mọi người.
+ Thật ra thì tôi nghĩ thế này:
Thay vì lisp y xì như chủ thớt nghĩ, giải pháp khác là có 1 phím bật chế độ UCS dành cho Object. Vẽ hay thao tác xong thì lại bấm về UCS world. Thế là tiện cả đôi đường, nhà nhà đều vui @@
Còn nếu bạn muốn viết đúng như những gì bạn yêu cầu thì cũng đơn giản thôi. Nhưng để mai tôi viết cho ( Hiện thời đang dùng điện thoại @@)
- 1
-
Bạn thử code này xem, do gõ trên điện thoại nên tôi ko chắc code đúng.
(defun c:DC ()
(Command "ucs" "object" pause "")
(Command ".line" pause pause "")
(Princ))
- 1
-
+ Bài này bị lỗi nói ngọng !
-
Nhờ viết lisp
trong AutoLisp
+ Hình vẽ này tàm được. Nhưng liệu bạn có dám bỏ ra chi phí xứng đáng với công sức người viết ?
- 1
-
Công cán ra sao :))) Có bánh mì thì sẽ có người giúp, miễn sao nó thoả đáng... Mà hình như loại bài toán này đã có người giải rồi. Khéo tìm có khi lại được free đấy !
Mà bạn này có lẽ chưa thạo sử dụng Osnap? Vì chỉ cần bật mỗi Intersection thì còn sợ gì bắt điểm nhầm!
-
1 giờ trước, Nha Dan đã nói:Xin cho ý kiến !
Mình có 1 vấn đề cần hỏi các cao thủ nha :
Với bản vẽ đính kèm, mình gõ điểm đầu điểm cuối trong excel :
VD : mình gõ điểm đầu A, điểm cuối F thì ra tổng các giá trị gán trên các đoạn thẳng là 1400 (100+100+300+400+300+200)
Có cách gì mình gõ điểm đầu điểm cuối bất kì thì ra tổng các giá trị gán trên các đoạn thẳng tương ứng ko
Xin cảm ơn
+ Cái này liên quan đến Excel chứ liên quan gì đến Cad đâu ? @@.
-
Nối thép 40D
trong AutoLisp
7 giờ trước, thanh96 đã nói:Em đang định làm bài toán lát sàn mà chưa biết logic sao cho hợp lí.
Không biết bác gặp loại này bjo chưa ak. (em chỉ thấy rải vật thể theo đường thui ak)
Hiện em đang có suy nghĩ thế này: (gạch axb)
Cách 1: từ đường bao chọn và điểm mốc. kẻ các đường ngang cách nhau a.
-Tìm giao giữa đường thẳng đó và đường bao. Sau đó dùng lệnh Array rải đối tượng từ điểm giao bên trái sang phải.
Nhưng cách này nếu gặp tường giật thì gạch sẽ lệch.(rải sai) chắc sửa bằng tay.zz
Cách 2 (cách này sẽ tạo ra các điểm point trước sau copy đối tượng tạo point đó)
- từ đường bao và điểm mốc>> giới hạn rải x,y max min, từ đó rải điểm cách a,b trong miền.
- với các điểm (tường giật vào) thì xét các miền ngang đi qua đỉnh của đường bao từ trên xuống dưới ( Xgh và Ygh) hợp với đỉnh (Xmin, Ymax) và (Xmax, Ymax) ta sẽ được 2 miền. Nếu tia đi từ điểm giới hạn qua điểm xét mà không cắt thì loại, nếu cắt thì xét tiếp ở đỉnh tiếp theo.>>Nếu cắt thì cho vào danh sách chọn. cứ thế cho đến hết.
Nhược điểm sẽ không nát được các miền sát mép tường.
Không biết có ổn không anh.
Các cách nào khả thi hơn không ak.
Nhân tiện cái lệnh để kiểm tra xem 2 đối tương có giao nhau không là gì vậy ak. Để em ngồi mày mò ak( chắc là lâu hh)
Nếu có thể anh viết hộ em được không ak.zz
+ Đã tốn công gõ bài thì tại sao không thêm 1 cái hình vẽ cho nó trực quan ?
-
Nối thép 40D
trong AutoLisp
2 giờ trước, thanh96 đã nói:Trong lisp chẳng hạn thực hiện liên tiếp các lệnh như copy break.
Khi ctrl+z thì có thể trở lại trạng thái trước khi dùng lệnh được vậy anh.
Dùng nhiều ctrl+z lại hơi lâu anh ak.
Mong anh giúp ak.
Thử thêm 2 dòng sau vào lisp, bạn có thể tự thêm được .
(Defun c:DC ( / abcxyz)
(Command "undo" "begin")
.....
....
(Command "undo" "end")
(Princ)
)
- 1
-
Chỉnh sửa mã Lisp
trong AutoLisp
1 giờ} trướ}c, nhunhapro123 đã nói:Khi mình chạy file lisp trên thì mặt cắt ngang thân trụ nó lại chạy lung tung không đúng với vị trí tim mặt cắt bệ trụ. Bạn #Danh Cong có thể giải thích giúp mình lý do tại sao không?
Đã có lỗi thì sẽ sai "đâu đó" trong lisp. Tuy nhiên rất khó cho ai phải soát lỗi kiểu này, vì chẳng biết đằng nào mà lần.
Ví dụ như code của bạn, chẳng ai biết code nào vẽ bệ trụ, thân trụ vv...., ( cũng không có dòng nào chú thích đánh dấu). Các điểm thì chỉ đặt là A, B, C theo sở thích của bạn, chứ không phải đặt là BE1, BE2.... THAN1, THAN2. Như thế, đến chính bạn sau 1 năm nữa cũng không còn nhớ bạn đặt tên điểm là ở đâu!
Vậy khuyên bạn nên đặt tên, ghi chú rõ ràng hơn. Chứ kiểm tra lỗi kiểu này nản lắm.
+ Bạn có thể đọc 1 số thủ thuật bắt lỗi ở đây:
-
Chỉnh sửa mã Lisp
trong AutoLisp
Đang xài điện thoại nên ko kiểm tra được.
Tuy nhiên thì tôi khuyến nghị ko xài Extrude nếu có thể tính toán toạ độ của 1 cách chính xác !
-
Chưa dùng cad 2010 nên cũng không biêt có hay không.
Còn chắc chắn đời cad > 2012 đều có chức năng này.
Bạn có thể đọc thử bài sau xem sao ? Biết đâu lại trúng Vietlot @@
-
-
43 phút trước, nhunhapro123 đã nói:Cảm ơn Bạn Danh Công. Đây là File Lisp trong sách của TS Nguyễn Hữu Lộc mình copy lại để dùng Bạn ah. Bạn có thể giúp mình chỉnh sửa được không?
Bạn đọc lại bài của tác giả, soát lại chứ còn khó khăn gì nữa đâu?
-
33 phút trước, quocmanh04tt đã nói:Cho mình hỏi: Sai cú pháp, sai giá trị ( không có null) => Nghĩa là gì?
Do em chạy 1 lượt. Thấy nó báo nil, nên chơi kèo ( = nil Abc) chứ ko chơi null :v
-
52 phút trước, nhunhapro123 đã nói:;;;;;;;;;Ve helix;;;;
(defun C:HELIX3D()
(setq CMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setq BLIP (getvar "BLIPMODE"))
(setvar "BLIPMODE" 0)
;Data
(setq PITCH (getdist "\nNhap chieu cao = "))
(setq PITCH2 (getint "\nNumber of pitches <2> = "))
(cond ((null PITCH2) (setq PITCH2 2))) Sai cú pháp, sai giá trị ( không có null)
(setq RAD (getdist "\nRadius = "))
(setq PREC (getint "\nDivisions points <100> = "))
(cond ((null PREC) (setq PREC 100))) ; Sai cú pháp, sai giá trị ( không có null)
;
;Execution
(setq TOUR 0)
(setq ANG1 (* 0.5 pi)) ;start angle
(setq PTO (getpoint "Start point (Center line) "))
(setq X0 (car PTO) Y0 (cadr PTO) zo (caddr PTO)) ;* add
(setq ANG2 (/ (* 2.0 pi) PREC))
(setq DISTY (/ PITCH PREC))
(command ".3dpoly" (list XO Y0 (+ zo RAD))) ;* mod ; Sai chính tả
(repeat PITCH2
(repeat PREC
(setq TOUR (+ 1 TOUR))
(setq ANG3 (+ (* ANG2 TOUR) ANG1))
(setq DISTY2 (* DISTY TOUR))
(setq DISTX (* (cos ANG3) RAD))
(setq DISTZ (* (sin ANG3) RAD)) ;* mod
(setq PTX (list (+ DISTX X0)
(+ DISTY2 Y0)
(+ DISTZ Z0))) ;* mod ; Biến không có giá trị
(command PTX)
)
)
(command "")
;Rotation
(setq ANG (getangle PTO "\nRotation angle <90> "))
(cond ((null ANG) (setq ANG (/ pi 2.0))))
(setq ANG (RADI ANG))
(setq ANG (- ANG 90.0))
(setq ss (ssget "L"))
(command ".ROTATE" ss PT0 ANG)
(setvar "CMDECHO" CMD)
(setvar "BLIPMODE" BLIP)
(prinl) ; Sai chính tả
);K?t thúc chuong trình helix3d.lspFile lisp của mình chạy không được các cao thủ có thể xem giúp bị lỗi chỗ nào không ạ?
+ Kiểm tra sơ sơ ra từng này lỗi: @@.
Chắc bạn đang viết lisp trên text? Liệu bạn có biết gì về "VLIDE" ? , Ứng dụng chuyên dùng để dành cho lâp trình lisp. Có khả năng check lỗi, hỗ trợ code ....vv....
-
Rất nhiều bài viết liên quan:, có thể tìm qua từ khóa "Tạo Menu Cad" trong công cụ "Search" của diễn đàn.
Miễn là bạn chịu khó mầy mò và đọc:
https://www.cadviet.com/forum/topic/45066-yêu-cầu-lisp-tạo-menu-những-lệnh-cơ-bản/
https://www.cadviet.com/forum/topic/1402-cách-tạo-menu/
-
2 giờ trước, thanhmicco đã nói:Hiện nay em có làm công trình về trắc địa, cần bố trì rất nhiều vị trí các trụ hoặc tương tự như thế, Em muốn nhờ các anh giúp lisp khi quét chọn vào mặt bằng lưới trục ví dụ như fiel kèm theo.
- Ý đồ của em như sau:
+ Mỗi trụ có 4 điểm M1,M2,M3,M4 và tim trụ là điiểm giao nhau cua các trục A-1, A-2....B-1,B-2...(đường bao mố trụ có thể là Line hoặc Polyline)
Em nhờ các anh viết dùm em lisp khi quét toàn bộ mặt bằng thì sẽ cho ra file TXT hay EXCEL bao gồm cấu trúc sau: Số thứ tự, Tên các điểm bố trí M1,M2,M3....,A-1, A-2,....B-1,B-2... và Tọa độ X, Y của các điểm.
em xin cảm ơn nhiều.
P/S.
Em dùng các lệnh trong cacd hay lisp COOR hay COORN thì no cũng cho tọa độ X, Y. Nhưng nó ko sắp xếp theo thứ tự và cũng không có Tên các điểm như trên.
+ COORN vẫn sắp xếp theo thứ tự. Vấn đề là phải Pick tay các điểm. Và nếu đã theo thứ tự rồi thì việc đặt tên trong Excel không phải là vấn đề.
Cái nữa là làm thế nào để biết vị trí nào là M1, M2, trục nào là A1, A2 ?? Xác định bằng "mắt" thì chắc đánh đố nhau rồi, lisp không làm được.
Các vấn đề trên có thể giải quyết được bằng cách tại mỗi điểm bạn đặt 1 block ATT tribute vào đấy, ghi đầy đủ tên tuổi họ hàng hang hốc vào. Rồi Search trên diễn đàn để làm tiếp !
- 1
-
21 phút trước, Thuc Tap Vien đã nói:@ Ma Vương : Em dùng đây bác
Command:
DL dim1
Dim: lea Leader start: nil
Leader start: *Cancel*Gia phả dòng họ nhà CAD không có ai tên như vậy? Có khi nào bạn xin được đứa con mang dòng máu LISP chăng? :))))
- 1
-
Lisp dựng hình
trong AutoLisp
1 block có thể Scale theo phương X, Y. Làm tay chắc chậm hơn vài giây chứ mấy?
-
3 giờ trước, zen2505 đã nói:E đang chuyển bản vẽ đi gia công nhưng khi vẽ lên rồi không xác định được tọa độ cho bên gia công thực hiện. Bác có cách nào chỉ e với!
E cám ơn bác!
Có 2 lisp bạn cần tìm để giải quyết vấn đề này :)))) ( đã có trên diễn đàn ).
1: Lisp chuyển SPLine thành đường Pline.
2: Lisp xuất toạ độ đường Pline.
-
1 giờ trước, zen2505 đã nói:1. Cho e hỏi thêm bác nào có giải phải đo được cung này là bao nhiêu không ạ?
2. Mình đang muốn vẽ lại spline này nhưng ko xác định được tọa độ.
1. Tôi chưa hiểu rõ câu hỏi này của bạn.
2. Vẽ lại làm gì khi chỉ cần Copy ?
- 1
Xin Lisp đánh số bản vẽ kiểu array
trong AutoLisp
Đã đăng · Trả lời báo cáo
Diễn đàn rất nhiều bài tương tự ( Không 100% như mong muốn thì 80% là ok rồi ). Hãy chịu khó tìm !