-
Số lượng nội dung
905 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
29
Bài đăng được đăng bởi Thaistreetz
-
-
đối tượng mình chọn là text, mình dùng ssget để chọn, nhưng khi ở ngoài màn hình thì lại không chọn được,bạn có cao kiến gì không? :)
Bạn sử dụng method "X" nhưng kết hợp filter gồm các toán tử AND, OR, <,<,< và >,>,> cho mã dxf 10 để lọc các đối tượng trong khu vực muốn chọn. Mình gợi ý ban vậy thôi vì vao cadviet bằng đt ko code đc. Nhiều lisp của mình từng post lên cadviet có sử dụng cách này. Bạn có thể tìm để tham khảo
-
1
-
-
Cad nó thế thì đành chịu thế. Hàm ssget còn không cho chọn quá 128 tập chọn nữa cơ. Không biết cad mới thì có sửa số 128 chưa (?).
Zoom nó cà giựt nếu bản vẽ nặng. Với bản vẽ nhẹ thì nó lướt êm hơn. Và bạn có thể zoom bằng hàm vla thì nhanh hơn dùng command.
Ví dụ zoom window bằng vla:
(defun c:zoom1 ()
(setq acadapplic (vlax-get-acad-object))
(setq util (vla-get-utility (vla-get-activedocument acadapplic)))
(setq PT1 (vla-getpoint util nil "\nFirst Point : "))
(setq PT2 (vla-getcorner util PT1 "\nSecond Point : "))
(vla-ZoomWindow acadapplic PT1 PT2)
(princ))
)
Zoom bằng VLA theo tôi nhớ thì không hề nhanh hơn command. và còn bị nhảy dòng tại command screen nữa.
-
các bác cho em hỏi, khi chọn đối tượng trong bản vẽ cad bằng hàm lisp, nếu em không zoom phần đối tượng được chọn lên màn hình thì không chọn được đối tượng đó, vậy làm sao đối tượng đó nằm ngoài giao diện màn hình đồ họa mà mình vẫn chọn được đối tượng đó (đã biết trước vị trí và vị trí chứa đối tượng này cố định trong bản vẽ) :)
Đối tượng mà bạn chọn là gì? Các đối tượng có điểm chèn: point, text, insert... hoàn toàn có thể chọn được tại mọi điểm ngoài phạm vi màn hình
-
Bạn tìm cái lisp theo dõi sự thay đổi biến hệ thống khi sử dụng cad. Em Linh cũng phải sử dụng lisp đó của mình mới có thể cho ra được cái ứng dụng hay ho này, k thì viết bằng niềm tin :D
-
1
-
-
Lười vậy?
nghĩa là hàm trên không có tác dụng với reactor chứ sao. Chỉ thao tác undo không thôi thì không thể xóa được 1 reactor khi nó đã được tạo ra. Kể cả khi không thiết lập nó ở trạng thái bền vững.
em cứ thử nhét 1 hàm tạo reactor vào giữa 2 hàm trên của em. sau khi tao xong reactor, nhấn esc để thoát rồi dùng lệnh RRA của anh kiểm tra mà xem nó có được gỡ khỏi bản vẽ không.
-
1
-
-
Thuật toán cao cấp... bình thường !
Anh k biết nó chạy thực tế ntn nhưng nhìn qua cũng biết nó k thể dùng được với trường hợp có sử dụng reactor trong lisp.
-
Bác Duy google với từ khóa "make entmake" đi. Đó là "cây đũa thần" của dân lập trình lisp đấy, nó dùng để tạo code lisp entmake cho mọi loại đối tượng từ đối tượng mẫu trên bản vẽ. Bác cũng nên giữ cho mình 1 bản phòng thân bác a.
-
1
-
-
Không cần phải save as. Muốn chuyển đổi định dạng code trong một cửa sổ soạn thảo chỉ cần vào tool, window attributes, rồi cái gì đó (dòng thứ hai thì phải), lựa chọn định dạng code muốn đổi
-
2
-
-
Cái tiêu đề dịch sang Tiếng Việt là "Sử dụng chương trình soạn thảo Visual Lisp như thế nào" bạn ạ.
-
1
-
1
-
-
Có thể đời cad cũng là một lý do mà trong trường hợp này bác gặp phải và mọi người cũng cần chú ý thêm, có thể hộp thoại của tôi cũng sẽ không còn chạy đúng vì nguyên nhân bác nêu (@Em Linh tét hộ a fát). Nhưng Tôi có đủ kinh nghiệm với DCL để chắc chắn về điều mình nói bác Hà ạ.
-
@Linh: Hộp thoại chương trình chính, thanh header (gọi nó là header chư không ai gọi là menu nhé) đúng là không phải image. Còn hộp thoại tra thép, đó không fải là slide mà chính xác là 1 image. Hoàn toàn có thể dùng text trong image, nhưng đó là text đồ họa 8bit hoặc text vector. Cái này thì em rành quá rồi. Image không sử dụng chung font chữ với text của các tile bình thường khác,là font đồ họa 16 và 32bit
Tối về check email nhé.
@Tue_nv: Chương trình thống kê thép này em viết chưa hoàn thiện, gần xong thì nghỉ việc nên vứt xó nó hơn 1 năm qua, giờ cũng không có ý định fát triển tiếp nữa. Lúc nào rảnh em sẽ làm cái tut giới thiệu toàn bộ để bác coi.
@ĐVH: hình tôi post đúng là win8 đấy. Chiều rộng các tile không chỉ fụ thuộc vào tham số width mà còn fụ thuộc vào các yếu tố khác: chiều rộng tổng thể của hộp thoại, tỷ lệ chiều rộng giữa các tile trong cùng hàng....
-
Nhảy thì sửa. Chỉ cần thêm 1 hàm con justify cho text trong cột. Mách có chứng, đây là chương trình tôi viết bằng Lisp và DCL.
Thêm 1 ví dụ về việc phân trang để nhóm dữ lieu
-
2
-
-
Ngoài ra nếu bác không tiếc công sức đã bỏ ra để viết hộp thoại trên thì có thể viết lại theo hướng khác, đảm bảo đẹp hơn, chạy nhanh hơn (tôi có thể chắc chắn rằng hộp thoại trên của bác khi chạy luôn có độ trễ) và không cần phải giải quyết vấn đề mà bác đang đề cập.
Tổ chức dữ liệu của bác khá đơn giản. Có thể dùng dấu tab để phân cách dữ liệu trên 1 dòng listbox. Qua đó tạo các hàng và cột như trên chỉ với một listbox duy nhất.
-
Ô! Gettile.
hay tôi đang hiểu nhầm? Ý bác là hàng thứ mấy trên giao diện hộp thoại chăng?
Mấy trăm thì nếu là tôi, tôi sẽ chọn giải pháp phân trang. Mỗi trang khoảng 25 đến 50 phần tử. Chứ với 500 phần tử mà bác cuộn để tìm thì hơi mệt mỏi đấy.
-
Việc này chỉ để làm đẹp hộp thoại chứ không tạo thêm hiệu quả sử dụng. Mình từng viết 1 ứng dụng thiết kế taluy trắc ngang cho nova có sử dụng hộp thoại song song 2 listbox thế này.
Theo mình nhớ thì: Nếu trong quá trình sử dụng, dùng chuột để pick chọn trong 1 bên list box thì các listbox còn lại sẽ tự nhảy và tự cuộn cho ngang hàng thì phải. Nếu đúng thì bác có thể lợi dụng nó găn vào action của các thanh cuộn.
trong trường hợp danh sách của bác không quá dài thì có thể làm như mình từng làm: viết hộp thoại để listbox có thể tự động thay đổi kích thước theo chiều dài của dach sách phần tử, khi đó sẽ không cần phải cuộn nữa. Cần một chút sáng tạo và khéo léo khi code để làm việc này.
-
Phong cach viet lisp voi tu duy cua ke luoi bieng giong minh. Hoi truoc minh cung viet 1 lenh y het the nay. Cung dat ten lenh la cf lun, khac la dung sendkey =))
-
http://www.cadviet.com/forum/topic/22849-xin-lisp-can-text-vao-chinh-giua-o/
lâu rồi em không làm việc với Cad nên không còn viết lisp nữa. Bác tham khảo lisp cuối cùng trong topic này.
-
Nếu pick từng đối tượng kèm điều kiện rẽ nhánh thì sử dụng initget cũng được rồi mà bác. Em nhớ có lần chính bác trả lời cho em vấn đề này trong topic "undo trong quá trình chạy lisp.
về hàm grread, hoàn toàn có thể viết để chọn được nhiều đối tượng. Em đã làm trong lisp chuyển nhanh các text vào trọng tâm miền kín gần nhất đã post trong forum. Cách này dùng để chữa cháy, khi tập hợp đối tượng chọn đơn giản,không cần áp dụng các điều kiện lọc fức tạp thì tạm chấp nhận được.
Em Linh cần cái này chắc để áp dụng vào lisp chọn nhanh đối tượng thì fải. A nghĩ là không làm được đâu, bởi trước đây anh đã thử làm rồi nhưng không thành công.
-
Em su dung dien thoai nokia Lumia bac Hoanh a. UCweb browser, vao cadviet giao dien di dong
-
Lee mac nó viết hà m nà y rá»i.
Leemac no viet ham nay roi.
cadviet dang bi loi tieng viet chu minh khong co tinh viet khong dau nhe
-
2
-
-
@Ketxu: có chuyện gì thế hả ketxu?P/s a Thái và TLinh : có nhiều người theo dõi topic
@TL: không có cad để test nhưng đọc qua code thì anh chắc chắn là code trên của em không thể áp dụng cho Rtext. Lệnh ddedit không có hỗ trợ rtext đâu. Anh nhớ không nhầm thì autodesk phải viết riêng một lệnh để sửa rtext được tích hợp vào express.
bộ gõ Tiếng Việt của tác giả Kỳ Nam giải quyết rất tốt các chế độ gõ cho từng chương trình, từng cửa sổ con trong các chương trình sao em không dùng mà cứ phải là unikey nhi? Kết hợp với lisp này nữa là giải quyết được rất nhiều vấn đề đấy.
-
Để viết cho attribute @ThuyLinh cần tìm hiểu thêm về các kiểu đối số của hàm command. Đố làm được đấy!
-
1
-
-
Lỗi do thiếu hàm dxf. Bạn copy lại code bên trên hoặc có thể thay dòng cuối cùng bằng dòng này
(cdr (assoc 330 (entget (entmakex (list '(0 . "SEQEND") (cons 8 (if Layer Layer (getvar "Clayer")))))))))
-
1
-
-
Trích dẫn dưới đây được lấy ra từ topic, mình tách ra topic này vì nội dung thảo luận không còn liên quan đến topic đó nữa
Bạn cũng có thể sd cái lisp của người Nga do bạn thanhduan2407 đưa lên, mình thấy nó chạy cũng tương tự nhau, kể cả thời gian
Qua test thử thì Em thấy file của bạn lethaonguyen post trên chạy nhanh hơn code của bác Elpanov đáng kể. Cụ thể với 7436 điểm cao độ kết quả lần lượt là 6giây và 9giây.
Em quyết định chuyển code của bác Elpanov thành .fas chứ không để .lsp nữa và test lại thì kết quả hoàn toàn bằng nhau.
Tiếp, do có chút nghi ngờ nên em thử Decomplie file fas của lethaonguyen thì hóa ra 2 code trên gần như giống nhau hoàn toàn cả về thuật toán lẫn cách thức triển khai code.
Kết luận:
- Code của lethaonguyen cũng chính là code của bác Elpanov (nghĩa là giống nhau về thuật toán và cách viết thôi nhé, mình không có ý bảo tác giả code đó copy code của Elpanov rồi make thành fas lòe anh em)
- Fas chạy nhanh hơn Lsp. kết quả trên cho thấy fas nhanh hơn 1.5 lần. Tuy nhiên thực tế còn có thể nhanh hơn nữa tùy vào cấu trúc của code và loại dữ liệu mà nó xử lý. con số này thậm chí có thể lên đến cả chục lần.
- Việc tải 1 file fas vào bản vẽ cũng nhanh hơn rất rất nhiều so với lsp. Cụ thể: mình tải 1 file lsp dung lượng 953KB mất khoảng 40s. Make file lsp đó + khoảng 50 file lsp lằng nhằng khác, tổng dung lượng là 4120KB thành 1 file fas dung lượng 2059KB - tải vào bản vẽ mất 0.3s. (lưu ý là với cùng nội dung thì fas nhẹ hơn lsp khoảng 1 nửa)
- Như vậy có thể thấy rằng: *.lsp có thể chậm hơn VBA hay VB nhưng *.fas thì chưa chắc. Còn *.vlx mình chưa bao giờ dùng nên chưa có kết luận gì.
-
1
-
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)
trong AutoLisp
Đã đăng · Trả lời báo cáo
Không chỉ trong vòng lặp nó mới nhảy mà ở ngoài nó cũng nhảy, hàm này mỗi lần chạy sẽ print ra command line 1 ký tự xuống dòng. Kiểu như đó là 1 trong các nhiệm vụ của nó. Với zoom thì command lại nhanh hơn VLA nhiều. Trừ khi bác cần zoom callback của 1 reactor thì hãy dùng VLA, còn trong mọi trường hợp khác hãy dùng commmand.