ngokiet
-
Số lượng nội dung
404 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
43
Bài đăng được đăng bởi ngokiet
-
-
Chắc là bạn ấy nhầm.
Còn mình viết ví dụ thôi. Nếu chưa biết hàm nào dùng thì có thể set biến là hàm để sử dụng sau. Vì ban đầu bạn ấy viêt cũng ko có gì sai.
-
3 phút trước, thanhduan2407 đã nói:Sorry bác, trong hàm có biến đi kèm, mà biến chưa xác định.
Thì vậy mình mới nói . Lúc nào xác định biến thì gọi hàm choose là được.
-
1 giờ} trướ}c, Doan Van Ha đã nói:choose ?
Vì bác ấy ghi
(setq choose ham1)...
ví dụ:
(setq ch +)
(ch 5 3) = 8
Ch lúc đó là hàm +
Trong lisp thì hàm cũng là biến.
-
3 giờ trước, ngokiet đã nói:dxf 40 lỗi khúc này là do xuât kết quả ra text mà text high bị sai.
Sửa lỗi này thì phải có tác giả lisp mới biết chỗ nào.
1 giờ trước, thanhmicco đã nói:Dẫu sao cung cảm ơn bạn nhiều
Mình trả lòi như vậy cho bạn là để bạn hiểu với thông tin bạn hỏi như vậy thì chỉ trả lời được như vậy thôi.
Bạn muốn nhiều hơn thì phải có file lisp và bản vẽ trường hợp lỗi đó. Người khác mới trả lời chính xác và hoàn thiện lại lisp trong trường hợp lỗi tương tự.
-
1 giờ} trướ}c, hoangmai1003 đã nói:anh giúp em với, em gửi file lên rùi đó anh
Bạn nên tham chiếu field vào 1 đoạn thẳng hay là dim trong block luôn. Và đó là text chứ ko phải attdef thì nó mới được.
Vì trong block mà field chỉ tới chính block thì nó chưa tồn tại làm sao mà tham chiếu được.
Còn ko thì tạo att thường. Sau đó tạo field. Khi sử dụng thì copy chứ không insert được.
- 1
-
29 phút trước, thanhmicco đã nói:dxf 40 lỗi khúc này là do xuât kết quả ra text mà text high bị sai.
Sửa lỗi này thì phải có tác giả lisp mới biết chỗ nào.
-
Lỗi Cad 2020
trong Sử dụng AutoCAD
Mình chưa cài nhưng hình như nó cần net framework 4.7.
Win 7 cần update https://support.microsoft.com/en-us/help/4019990/update-for-the-d3dcompiler-47-dll-component-on-ưindows cái này mới cài net 4.7 dc
-
1 giờ trước, Doan Van Ha đã nói:Nhớ mường tượng hình như đã có lần vào ở đâu đó để lấy tên của tất cả biến môi trường (Environment) kèm value của nó, mà giờ quên mất(?)
Có ai biết nhờ chỉ giùm với, thanks!
Lệnh sysvdlg hả? Trong express tools
-
Bác dùng lệnh QSelect . Chọn Rotated Dimension + Measurement.
- 1
-
34 phút trước, hoangmai1003 đã nói:anh hướng dẫn được không ạ....
Bạn xem người ta làm như thế nào rôi ung dungjcho block của bạn.
-
11 phút trước, Doan Nguyen Van đã nói:Tại dùng Vla-explode thì nó chỉ nổ block thôi chứ không ra List vla như Vlax-invoke
Có mà bác. Nó dạng variant thôi.
(vlax-safearray->list (vlax-variant-value (vla-explode (vlax-ename->vla-object (car(entsel))))))
- 1
-
17 phút trước, Doan Nguyen Van đã nói:Cảm ơn bác nhé, cái này e thấy giống vla-expode, mà có vẻ gọn hơn, thank bác
Là 1 mà. vla vs vlax. Cái GetAttributes kia cũng vậy mà có vla-GetAttributes.
-
1 giờ} trướ}c, Doan Nguyen Van đã nói:Tiện bác cho em hỏi, có Method nào cho phép chọn đối tượng khác bên trong block không bác, giả sử lấy ra tọa độ Polyline trong block
Bác dùng Vlax-dump-object sẽ biết có menthod nào mà.
- Menthod có thễ dùng để lấy polyline là Explore
Tuy nhiên nó như lệnh explore của Cad. Là tạo ra các object explore. Nhưng nó trả về danh sách object cho bạn kiểm tra cần lấy cái nào. Và xóa cái không cần thiết.
Thật ra lấy các attributes thì bạn cũng có thể dùng entnext
Entnext block nó trả về att đầu tiên. entnext att dầu nó trả về att tiếp nếu không có thì nó tra về ent có tên là SEQEND.
Vì các Att tồn tại là ent của CAD nên có thể chỉnh font, text, style ... như 1 text bình thường. Và khi getattributes thì nó trả về các vbaobject của các att đó.
Còn các thành phần khác thì không có obj tương ứng nên ko dc.
- 1
-
Bạn hỏi phải rõ ngươi ta mởi giúp được chứ.
Block động phải không?
Stretch line thì phải move circle 1/2 giá trị stretch thì cicle nó nằm giữa.
-
Dùng menthod GetAttributes để lấy danh sách att.
Kiểm tra att nào có tag đúng theo ý bạn rồi lấy thôi mà.
Vì chiều cao text này thay đổi dc nên lấy theo block ko đúng lắm.
Test:
(mapcar '(lambda(x) (list (vla-get-tagstring x) (vla-get-height x))) (vlax-invoke (vlax-ename->vla-object(car(entsel))) 'GetAttributes))
- 2
-
-
23 giờ trước, mr.thanh2610 đã nói:Cảm ơn bạn nhiều nhé....
Mình sửa lại cho bạn theo phiên bản gốc nè. Bạn có thể bổ sung hay thêm bớt các kiểu tùy ý và dễ sửa hơn.
(có thể chồng nhiều loại hatch như kiểu bêton)
Nếu bạn sửa (command "hatch") Thành (command "-hatch")
Thì nó mặc định là pick điểm. Còn nhấn S sẽ là select.
- 1
-
21 giờ trước, huunhantvxdts đã nói:Sửa lại cho bạn nhập góc theo độ nhé:
(defun c:SF(/ p dt ans ten sc dt angrad) (setvar "cmdecho" 0) (initget "B B1 B2 BK G GD GD1 GL GL1 GL2 D D1 C K N N1 TO GO GO1") (setq ans (getkword "\n Chon kieu hatch < B/B1/B2/BK/G/GD/GD1/GL/GL1/GL2/D/D1/C/K/N/N1/TO/GO/GO1 > : ")) (or (and ang (or (= (type ang) 'int) (= (type ang) 'real))) (setq ang 0.00)) (setq ang (cond ((getreal (strcat "\nNhap goc theo do <" (rtos ang 2 2) ">: "))) (ang))) (setq angrad (*(/ ang 180) pi)) (if (= ans "B") (progn (setq ten "AR-CONC" sc 20.0 ten2 "ANSI32" sc2 200.0) ) ) (if (= ans "B1") (progn (setq ten "AR-CONC" sc 20.0) ) ) (if (= ans "B2") (progn (setq ten "GRAVEL" sc 100.0) ) ) (if (= ans "BK") (progn (setq ten "SOLID" sc 200.0) ) ) (if (= ans "G") (progn (setq ten "ANSI31" sc 400.0) ) ) (if (= ans "GD") (progn (setq ten "AR-B816" sc 10.0) ) ) (if (= ans "GD1") (progn (setq ten "FLGSTONE" sc 500.0) ) ) (if (= ans "GL") (progn (setq ten "NET" sc 1500.0) ) ) (if (= ans "GL1") (progn (setq ten "ANGLE" sc 700.0) ) ) (if (= ans "GL2") (progn (setq ten "AR-HBONE" sc 20.0) ) ) (if (= ans "D") (progn (setq ten "HOUND" sc 500.0) ) ) (if (= ans "D1") (progn (setq ten "EARTH" sc 500.0) ) ) (if (= ans "C") (progn (setq ten "AR-SAND" sc 20.0) ) ) (if (= ans "K") (progn (setq ten "AR-RROOF" sc 500.0) ) ) (if (= ans "N") (progn (setq ten "AR-RSHKE" sc 30.0) ) ) (if (= ans "N1") (progn (setq ten "SPANTILE" sc 400.0) ) ) (if (= ans "TO") (progn (setq ten "ANSI32" sc 200.0) ) ) (if (= ans "GO") (progn (setq ten "WOOD8" sc 700.0) ) ) (if (= ans "GO1") (progn (setq ten "WOOD2" sc 500.0) ) ) (setvar "hpname" ten) (setvar "hpscale" sc) (setvar "hpang" angrad) (initdia) (command "hatch") (while (< 0 (getvar "CMDACTIVE")) (command pause) ) (princ) )
Sao bạn không sửa getread thành getangle là được rồi mà.
-
Thử lisp này xem
(defun c:test2(/ s1 s2) (Princ "/nChon text nguon:") (setq s1 (acet-ss-to-list (ssget '((0 . "TEXT"))))) (Princ "/nChon text dich: ") (setq s2 (acet-ss-to-list (ssget '((0 . "TEXT"))))) (or (and s1 s2) (exit)) (mapcar '(lambda(a b) (vla-put-textstring (cdr b) (cdr a))) (vl-sort (mapcar '(lambda(x / en) (cons (cdr (assoc 10 (setq en (entget x)))) (cdr (assoc 1 en)))) s1) '(lambda (x y) (if (equal (cadar x) (cadar y) 3.) (> (caar x) (caar y)) (< (cadar x) (cadar y))))) (vl-sort (mapcar '(lambda(x) (cons (cdr (assoc 11 (entget x))) (vlax-ename->vla-object x))) s2) '(lambda (x y) (if (equal (cadar x) (cadar y) 3.) (> (caar x) (caar y)) (> (cadar x) (cadar y)))))))
- 1
-
Lệnh units nhé bạn
-
Bác copy hết tất cả rồi dùng lisp align text 1 lần là xong thôi mà.
Chứ làm vậy bác cũng mất công tạo mấy cái text xx cho đúng số lượng tương ứng.
- 1
-
Bác mirror lên rồi xoay text lại là được rồi mà.
- 1
-
1 giờ trước, Doan Van Ha đã nói:Bài toán này làm được nhưng code rất vất vả đây.
Bác thấy có cách hả? Thấy spline là thấy bó tay rồi. Pline cũng đủ mệt rồi.
-
1 giờ} trướ}c, Doan Nguyen Van đã nói:(defun c:dc (/ ent ent2 p1 p2) (if (setq ent (car (entsel "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+1EA7u ti\U+00EAn!"))) (progn (if (wcmatch (cdr (assoc 0 (entget ent))) "INSERT,CIRCLE") (progn (while (setq ent2 (car (entsel "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng ti\U+1EBFp theo!"))) (if (wcmatch (cdr (assoc 0 (entget ent2))) "INSERT,CIRCLE") (progn (setq p1 (cdr (assoc 10 (entget ent))) p2 (cdr (assoc 10 (entget ent2))) ) (command "DIMLINEAR" "_non" p1 "_non" p2 pause) (setq ent ent2) ) (alert "\n\U+0110\U+1ED1i t\U+01B0\U+1EE3ng kh\U+00F4ng ph\U+1EA3i Block, Circle!") ) ) ) (alert "\n\U+0110\U+1ED1i t\U+01B0\U+1EE3ng kh\U+00F4ng ph\U+1EA3i Block, Circle!") ))))
Chọn nhiều đối tượng thì mình chịu, sort thế nào cho vừa ý đc
Chọn nhiều đối tượng cùng phương thì làm cái như qdim ấy.
Cón nếu pl đó liền nhau thì sort theo pline được như lệnh dim pline.
Còn dim như vậy thì bắt điểm được rồi chứ viết lisp ko hiệu quả lắm.
Bắt điểm tuỳ đối tượng INS/CEN/MID .Extend thì dùng dimcontinuos.
Viết lisp cũng đâu nhanh hơn bao nhiêu.
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)
trong AutoLisp
Đã đăng · Trả lời báo cáo
Thanks bác sửa dùm do quên test.
Nhưng mình thích
(setq LtsZichZac ((eval(read(strcat “SortPoint_” style))) LtsPoint kccum))
hơn vì eval không phải chạy lệnh.