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

Viết Lisp theo yêu cầu

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

Bac Hoanh ah!Em muon hoi bac 1 chut!

Theo em biet trong acad14 co lenh "PACK" voi tac dung gan cac font,linetype,... vao ban ve de khi ta chuyen sang may khac van su dung duoc ma khong can co nhung font,linetype...tren.Em thu lenh nap tren cac cad version cao hon nhung khong co lenh tren.

Bac co biet lam sao de lay lenh do tu cad14 ve cac cad kia khong?Hoac co liep nao thuc hien duoc lenh tren?

cái này thì bác Hoành đã giảng rồi đấy đai ca.he.dùng lệnh ETRANSMIT .sẽ gom cái file cần thiết như bác kể trên thành 1 file duy nhất dạng zip :bigsmile:

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

Xin lisp thay đổi scale dim thì chức năng overall scale cũng thay đổi theo có nội dung như sau:

VD: trên màn hình là 1 dim, chạy lisp hỏi tỉ lệ scale dim : nhập 2, chương trình sẽ tự động scale dim lên 2 lần đồng thời thay đổi overall scale lên 2 theo ( mặc định ban đầu overall scale là 1) và scale liner giảm đi còn 0.5( mặc định ban đầu scale liner 1).

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
Bac nao cho em LISP ve duong han trong ket cau thep duoc khong :bigsmile:

Không cần phải dùng đến lisp để vẽ các nét riêng.

Trong Express>Tools có 2 lệnh: Make linetype và Make Shape. Đây là 2 lệnh dùng để tạo ra phông chữ (big font) và kiểu nét theo ý đồ riêng.

Về vấn đề tạo nét: Bạn có thể tạo ra một nét bất kỳ như các đường biểu diễn Mái dốc taluy, nét hàn (liền, ngắt quãng, khuất...), mặt cắt đất tự nhiên vv và vv, nói chung bạn có thể tạo ra một nét bất kỳ miễn sao nó có tính quy luật.

Cụ thể:

Đầu tiên bạn hãy vẽ những chi tiết cần thiết tạo lên nét vẽ ví dụ đối với nét hàn liên tục và nhìn thấy bạn hãy vẽ một hình có dạng chữ L (|_) rồi dùng lệnh: Make Shape để tạo ra một Shape sau đó dùng lệnh Shape để chèn hình vừa tạo vào bản vẽ, tiếp theo dùng lệnh Make linetype để tạo ra nét cần tạo, rất đơn giản, bạn sẽ có một nét có dạng: |_|_|_|_|_|_ khi đó bạn chỉ cần chọn kiểu nét cho đối tượng cần biểu diễn là xong. Ưu điểm của cách làm này là giúp cho dung lượng của bản vẽ nhẹ đi, nếu dùng Lisp để vẽ các Line như hình trên thì sẽ rất nặ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

SSG ko hỉu ý mình rùi.

Mình mún thực hiện layiso,layoff trong 1 lệnh khác cơ.

Vd: Ta đang vẽ line,bỗng thấy bản vẽ chật chội quá, không thể pick điểm được.

Ta sẽ tắt bớt layer đi, sau đó vẫn tiếp tục line đang vẽ dở.

Mình đã thử như SSG nói rùi.Nhưng có lẽ đó không phải là cách.

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
SSG ko hỉu ý mình rùi.

Mình mún thực hiện layiso,layoff trong 1 lệnh khác cơ.

Vd: Ta đang vẽ line,bỗng thấy bản vẽ chật chội quá, không thể pick điểm được.

Ta sẽ tắt bớt layer đi, sau đó vẫn tiếp tục line đang vẽ dở.

Mình đã thử như SSG nói rùi.Nhưng có lẽ đó không phải là cách.

Sao lại không hiểu! Acad gọi đó là transparent command, cho phép thực hiện 1 lệnh trong 1 lệnh khác. Bạn thử như thế nào mà không được? Đang thực hiện lệnh "line" chẳng hạn, bạn bấm 'la, nghĩa là thực hiện lệnh layer ở transparent mode. Hộp thoại xuất hiện, bạn muốn làm gì thì tùy. Cụ thể hình dưới đây là cho layer DIM off:

 

http://www.cadviet.com/upfiles/layoff.gif

 

Xong tiếp tục với lệnh line đang dở dang.

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

Xin a Nguyễn Hoanh đọan lisp : trên file acad dang co nhiều text là số, lisp sẽ giúp cùng tăng hoặc cùng giảm các text(số) này theo một số nào đó. Ví dụ : ta có text : 1.2 1.3 1.4 tăng thêm 0.3 thành 1.5 1.6 1.7

Cám ơn nhiề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

Xin lisp thay đổi scale dim thì chức năng overall scale cũng thay đổi theo có nội dung như sau:

VD: trên màn hình là 1 dim, chạy lisp hỏi tỉ lệ scale dim : nhập 2, chương trình sẽ tự động scale dim lên 2 lần đồng thời thay đổi overall scale lên 2 theo ( mặc định ban đầu overall scale là 1) và scale liner giảm đi còn 0.5( mặc định ban đầu scale liner 1).

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

SSG nói phải.Nhưng có phải cách này hơi dài chút không.

Nếu ta có thể layon.iso,off trong 1 lệnh khác ngay trên màn hình thì mới nhanh chứ,

Còn nếu bị hiện bẳng ra để chọn thì chịu khó căng mắt ra chọn điểm or zoom thật to lên

mà chọn có khi lại nhanh hơn ý.

SSg chắc hỉu ý mình. SSG viết giúp mình cái lish đó đc khô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
SSG nói phải.Nhưng có phải cách này hơi dài chút không.

Nếu ta có thể layon.iso,off trong 1 lệnh khác ngay trên màn hình thì mới nhanh chứ,

Còn nếu bị hiện bẳng ra để chọn thì chịu khó căng mắt ra chọn điểm or zoom thật to lên

mà chọn có khi lại nhanh hơn ý.

SSg chắc hỉu ý mình. SSG viết giúp mình cái lish đó đc không?

Chịu thôi! Lisp cũng không thể nhanh hơn động tác "căng mắt ra chọn điểm hoặc zoom to lê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

anh ơi. trong cad khỉ mình đo kích thước thi cắc đường dóng khổng đều nhau, vậy làm thế nào để các đường dóng của kích thước bằng nhau được. em thấy dùng lệnh trim thì kô cắt được. vậy có cách gì anh chỉ cho em với, có phải trong cad có lệnh đó không hay là phải viết lips hạ anh.

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
anh ơi. trong cad khỉ mình đo kích thước thi cắc đường dóng khổng đều nhau, vậy làm thế nào để các đường dóng của kích thước bằng nhau được. em thấy dùng lệnh trim thì kô cắt được. vậy có cách gì anh chỉ cho em với, có phải trong cad có lệnh đó không hay là phải viết lips hạ anh.

Hiệu chỉnh DimStyle trong ACAD2008,như sau :

Vào Dim Style -> chọn Modify -> Trong Tab Lines (phía dưới - bên phải) chọn hộp kiểm Fixed lenght extension lines và chỉnh Lenght = 6-7-8 (tùy ý) . Lúc này đường dóng bị khống chế chiều dài = 6 unit . Vậy là khỏi cần cắt chân, cắt cẳng gì 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

Thanks SSG nhìu về đoạn lish trên nha. Nó là cái rất cần cho công việc của mì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

OK công việc nhiều nên cần trí tuệ Lisp

Tôi mới vào trang thấy diễn đàn có nhiều người viết Lisp rất giỏi . Nhất là bạn Hoành và SSg

Tôi cũng hay viết Lisp và có hoàn thiện 1 số chương trình dạng cho người dùng nhập dữ liệu từ giao diện

tuy nhiên giao diện dạng file ****.dcl của Acad có nhiều hạn chế ; ví dụ như ko thể lập nhiều TAB trong 1 hộp thoại..

Tôi có tham khảo qua VBA thì dĩ nhiên ngôn ngữ này tựa trên Visual Basic nên giao diện thân thiện hơn.

Nhưng mình quen với Lisp quá dzồi nên giờ mày mò theo VBA tốn thời gian quá...ko biết cụ Hoành nhà ta có biết

cách nào trong ***.dcl làm đươc như bên VBA không nhỉ?

 

Và tôi muốn hỏi là các dữ liệu động trong Properties của Acad mới (2004-2008) tự động cập nhật khi ta sửa số liệu được viết = C++ phải ko?

Hoặc 1 số chương trình của hảng Hài Hòa viết trong TOPO hay HS khi chọn đối tượng cho ra giao diện như Properties được viết = 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
Mục này của các bạn hay lắm!

Mình đang có vấn đề với nhân 2 ma trận cấp 3, các mách nước cho mình nha.

Thanks !

Bạn có thể diễn đạt rõ hơn bằng chính "phong cách" của lisp được không? Kiến thức đại số cao cấp quên hết trơn rồi!

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ạn làm giúp mình 1 lisp có tính năng sau nhé:

 

- Trong quá trình vẽ bản vẽ MB ký hiệu cửa, nhiều lúc vẽ xong rồi thì kiến trúc thay đổi thêm 1 cửa nữa ---> bản vẽ MB ý hiệu cửa cũng phải thay đổi, và việc thay đổi ký hiệu (VD: D3 thành D4 .... Dn thành D(n+1)) rất mất nhiều thời gian.

 

- Như file cad mình up ở bên dưới: lúc đầu mình có ký hiệu thống kê của

D1, D2, D2, D3

D4, D5, D5, D6

 

khi thêm 1 cửa nữa nên thống kê phải thay đổi là:

D1, D2, D3, D3, D4

D5, D6, D6, D7

 

(nhiệm vụ của cad là khi bấm vào ký hiệu D2, lisp sẽ tự động tìm và chuyển D2 thành D3, D3 thành D4 ... Dn thành D(n+1)

 

file cad minh hoạ

http://www.cadviet.com/upfiles/MB_ky_hieu_cua_1.dwg

 

Không biết mình mô tả như thế đã rõ ý chưa :bigsmile:

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ạn làm giúp mình 1 lisp có tính năng sau nhé:

 

- Trong quá trình vẽ bản vẽ MB ký hiệu cửa, nhiều lúc vẽ xong rồi thì kiến trúc thay đổi thêm 1 cửa nữa ---> bản vẽ MB ý hiệu cửa cũng phải thay đổi, và việc thay đổi ký hiệu (VD: D3 thành D4 .... Dn thành D(n+1)) rất mất nhiều thời gian.

 

- Như file cad mình up ở bên dưới: lúc đầu mình có ký hiệu thống kê của

D1, D2, D2, D3

D4, D5, D5, D6

 

khi thêm 1 cửa nữa nên thống kê phải thay đổi là:

D1, D2, D3, D3, D4

D5, D6, D6, D7

 

(nhiệm vụ của cad là khi bấm vào ký hiệu D2, lisp sẽ tự động tìm và chuyển D2 thành D3, D3 thành D4 ... Dn thành D(n+1)

 

file cad minh hoạ

http://www.cadviet.com/upfiles/MB_ky_hieu_cua_1.dwg

 

Không biết mình mô tả như thế đã rõ ý chưa :bigsmile:

Bạn dùng lisp dồn ký hiệu bản vẽ ở đây.

http://www.cadviet.com/content/view/22/32/

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
Mục này của các bạn hay lắm!

Mình đang có vấn đề với nhân 2 ma trận cấp 3, các mách nước cho mình nha.

Thanks !

 

 

;;;Create a matrix
(DEFUN MATRIX(sd sc i j chuoi num / liMa)
 (setq LiMa (List))
 (setq sd (getint "Nhap so dong Ma tran: "))
 (setq sc (getint "Nhap so cot Ma tran: "))
 (setq liMa (Append LiMa (list sd)))
 (setq liMa (Append LiMa (list sc)))
 (setq j 1)  
 (while (<= j sd)
(setq i 1)
(while (<= i sc)
  (setq chuoi (strcat "\nNhap phan tu [" (itoa j) "," (itoa i) "]= "))	  
  (setq num (getreal chuoi))
  (setq i (1+ i))
  (setq liMa (Append liMa (list num)))
)
(setq j (1+ j))
 )  
 liMa
)

(DEFUN NHANMATRIX (LiMa1 LiMa2 / liMa num)  
 (setq sd1 (nth 0 LiMa1))
 (setq sc1 (nth 1 liMa1))
 (setq sd2 (nth 0 liMa2))
 (setq sc2 (nth 1 liMa2))
 (if (/= sc1 sd2)
(alert "Hai ma tran khong the nhan duoc voi nhau.\n Kiem tra!!! ")
(progn
  (setq liMa (list))
  (setq liMa (Append liMa (list sd1)))
  (setq liMa (Append liMa (list sc2)))
  (setq j 1)
  (while (<= j sd1)
(setq i 1)
(while (<= i sc2)
  (setq num (NHANHANGCOT liMa1 j liMa2 i))
  (setq liMa (Append liMa (list num)))
  (setq i (1+ i))
)
(setq j (1+ j))
  )
)
 liMa 
 )
)

(DEFUN NHANHANGCOT(liMa1 hang liMa2 cot / num)
 (setq sc (nth 1 liMa1))
 (setq i 1)
 (setq num 0)
 (while (<= i sc)
(setq num (+ num (* (GETEMATRIX liMa1 hang i) (GETELEMENT liMa2 cot i))))
(setq i (1+ i))
 )
 num
)


;;;Get element at row j, column i in a Matrix
(DEFUN GETEMATRIX(liMa dong cot / sd sc num )
 (setq sd (nth 0 liMa))
 (setq sc (nth 1 liMa))
 (setq n (+ (* (- j 1) sc) i 1))
 (setq num (nth n liMa))
 num
)


(DEFUN PRINTMATRIX(liMa / sd sc)
 (setq sd (nth 0 liMa))
 (setq sc (nth 1 liMa))  
 (setq j 1)
 (while (< = j sd)
(setq i 1)
(while (<= i sc)
  (princ (GETEMATRIX liMa j i))
  (princ " ")
  (setq i (1+ i))
)
(princ "\n")
(setq j (1+ j))
 )  
)

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
Bạn có thể post yêu cầu về autolisp ở topic này.

Anh Hoành ơi! em muốn có một lisp để vẽ đường ta luy tạo mái dốc. Trong cad có lệnh này ko nhỉ. Mong anh giúp đỡ!

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 cao thủ lisp ơi. em có một bài toán thế này mong các bác giải quyết giúp em bằng lisp nhé:

khi vẽ quy hoạch nhàm chán nhất là vẽ tim đường, rồi offset, rồi chamfer. các bác có thể rút ngắn quy trình nhàm chán trên bằng lisp không. Tức là chỉ cần vẽ 2 cái tim đường giao nhau sẽ cho ngay một ngã tư ngon lành với 3 loại đường nét thuộc 3 layer khác nhau là timduong, viaheduong có sẵn, đầu vào số liệu là các thông số độ rộng đường, độ rộng vỉa hè, fillet radiuschamfer distance. Xin cảm ơn các bác trướ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
Bạn dùng lisp dồn ký hiệu bản vẽ ở đây.

http://www.cadviet.com/content/view/22/32/

 

 

Command: ap

APPLOAD DonKT.VLX successfully loaded.

 

 

Command: ; error: LISP application is already loaded DonKT

 

Mình chạy thì nó báo lỗi.

 

Cho mình hỏi thêm là ký hiệu cửa mình làm bằng Block và text thì làm bằng ATTDEF có áp dụng được lisp của bác không 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
Command: ap

APPLOAD DonKT.VLX successfully loaded.

Command: ; error: LISP application is already loaded DonKT

 

Mình chạy thì nó báo lỗi.

 

Cho mình hỏi thêm là ký hiệu cửa mình làm bằng Block và text thì làm bằng ATTDEF có áp dụng được lisp của bác không vậy?

lisp trên áp dụng cho cả text và block attribute.

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

Em mạn phép xin đc hỏi lại các bác lish lênh.

Layon, layiso, layoff trong 1 lệnh khác. Anh giúp

em lish này 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

Xin lisp thay đổi scale dim thì chức năng overall scale cũng thay đổi theo có nội dung như sau:

VD: trên màn hình là 1 dim, chạy lisp hỏi tỉ lệ scale dim : nhập 2, chương trình sẽ tự động scale dim lên 2 lần đồng thời thay đổi overall scale lên 2 theo ( mặc định ban đầu overall scale là 1) và scale liner giảm đi còn 0.5( mặc định ban đầu scale liner 1).

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

Command: ap APPLOAD DonKT.VLX successfully loaded.


Command:



HLisp da tai len thanh cong!
Command:
Command:
Command: DonKt
Unknown command "DONKT".  Press F1 for help.

 

Mình đã thử nhiều lần nhưng lisp Donkt vẫn không dùng được, không hiểu tại sao (hiện mình đang dùng cad 2007). NguyenHoanh xem lại giúp mình 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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×