-
Số lượng nội dung
899 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
146
Bài đăng được đăng bởi cuongtk2
-
-
Một đoạn code đã được edit sau khi nhờ chat GPT
(defun c:Test ( / textEnt textVal plineEnt layerName textHeight dist pllength pt i) (setq layerName "Caodo_Pline") (setq textEnt (car (entsel "\nChon Text có san là cao do: "))) (if (and textEnt (= (cdr (assoc 0 (entget textEnt))) "TEXT")) (setq textVal (cdr (assoc 1 (entget textEnt)))) ;; L?y giá tr? n?i dung (progn (princ "\nKhông phai doi tuong TEXT. Thoát lenh.") (exit) ) ) (setq plineEnt (vlax-ename->vla-object (car (entsel "\nChon Polyline can gán cao do: ")))) (setq textHeight 0.2) (setq dist (getreal "\nNhap khoang cách chia deu [Mac dinh 1.5]: ")) (if (not dist) (setq dist 1.5)) (setq pllength (vlax-curve-getDistAtParam plineEnt (vlax-curve-getEndParam plineEnt))) (setq i 0) (while (< (* i dist) pllength) (setq pt (vlax-curve-getPointAtDist plineEnt (* i dist))) (entmake (list '(0 . "TEXT") (cons 8 layerName) ;; Ð?t vào Layer Caodo_Pline (cons 1 textVal) ;; N?i dung Text (cons 40 textHeight) ;; Chi?u cao ch? (cons 10 pt) ;; Ði?m chèn (cons 50 0) ;; Góc xoay ) ) (setq i (1+ i)) ;; Tang ch? s? l?p ) (princ "\nHoàn thành gán Text cao do.") )
- 1
-
Đánh số góc ranh
trong AutoLisp
Dùng command sẽ bị Osmode ảnh hưởng.
-
tòa độ khác xưa là do tòa độ bị move sang chỗ khác. Lock layer lại để tránh chuyện đó.
- 1
-
Thông thường người ta sử dụng lại hàm lisp trong c# khi không muốn viết lại một hàm nào đó bằng cách invoke. Hầu hết sử dụng ở cuối của chương trình, để sau đó là không có sau đó. Tức là dạng đi nhờ xe, không để lại kết quả để phục vụ cho công tác khác. Vì tốc độ của lisp chậm, chỉ trừ trong trường hợp đặc biệt mới sử dụng, còn bình thường code mô phỏng lại lisp.
- 1
-
LWPolyline là đối tượng 2d. Mặt phẳng XY của bạn đang song song với hướng nhìn (xem trục Z bên trái , khuất trục Y). Xoay view chút nữa là thấy nó nhảy tưng bừng.
- 1
-
Sót dấu ngoặc đơn phía trước defun "(" , đã sửa lại cho bạn. Chúc vui vẻ.
-
(defun c:rd () (setvar 'cmdecho 0) (sssetfirst nil (ssget ":S" '((0 . "INSERT")))) (vl-cmdf "_.-refedit") (while (> (getvar "CMDACTIVE") 0) (command "_o" "" "") ) (setvar 'cmdecho 1) (princ) )
Đó bạn
-
Thứ làm trong video đó chỉ khoá với người không biết mở, vì nó là block ẩn danh, dùng minsert nên không thể phá khoá, cũng không biết tên gì để chèn vào. Tuy nhiên mở khoá nó với người biết chút lập trình thì quá đơn giản.
-
Bỏ vào tủ khoá lại. Đó là cách an toàn nhất. Còn nếu đã giao bản mềm cho người khác thì khoá cũng vô ích.
-
Hãy là split curve rồi trace theo midpoint?
-
Bác chia lưới m x n theo bound tổng để traceboundary à.
-
Vấn đề là click nhiều mỏi tay, đôi khi click bị trật vào cạnh còn hiện thông báo lỗi. Do đó nên dùng select objects.
Còn vấn đề để cho nó chạy nhanh được thì em chưa đủ khả năng học thứ đó chứ chưa nói đến làm ra.
-
Nếu giá Ok thì mua đi, họ đã bán thì chắc hẳn hướng tới một số đối tượng cần nó.
-
-
Về thứ bạn muốn thì lisp của conghoa sẽ phù hợp hơn, vì chỉ cần 1 lần select. Để mình test qua, nếu chưa phù hợp sẽ viết code khác cho bạn.
- 1
-
8 giờ trước, minhtuan57hk đã nói:Hi anh. Anh ơi em tìm được trên mạng đoạn code ntn. Nhờ anh build giúp để sử dụng được trong CAD được không ạ.
https://www.keanw.com/2010/06/tracing-a-boundary-defined-by-autocad-geometry-using-net.html
Em cảm ơn anh!
Mục tiêu của em để làm gì, bởi đã có lệnh BO trong Cad để tạo Boundary rồi.
Code của Kean chỉ mang ý nghĩa học thuật, hầu hết phục vụ cho coder về mặt hướng dẫn chứ không phải cho người vẽ.
- 1
-
1. Hầu hết là copy sang chỗ khác (hoặc bản vẽ khác) quên bật layer.
2. Có lệnh select all object với 1 layer nào đó, thao tác không để ý ấn delete.
-
Thay vì phải chọn phía đầu mút dư ngắn như vậy mình sẽ chọn phương án kéo điểm gần biên chặn hơn về đến biên chặn. Như vậy sẽ có chức năng Trim và Extend cùng lúc.
Lệnh mới chỉ dùng được cho LINE và LWPOLYLINE.
Chọn các đường cần cắt, sau đó chọn biên cắt.
(DEFUN c:test ( / BIEN EP LS PARAM PT SP fillcoord) (DEFUN fillcoord (pt) (VLAX-MAKE-VARIANT (VLAX-SAFEARRAY-FILL (VLAX-MAKE-SAFEARRAY VLAX-VBDOUBLE '(0 . 1)) (LIST (CAR pt) (CADR pt)) ) ) ) (PROMPT "\nChon cac LINE, PLINE bi cat") (SETQ ls (MAPCAR 'VLAX-ENAME->VLA-OBJECT (ACET-SS-TO-LIST (SSGET '((0 . "LINE,LWPOLYLINE")))))) (SETQ bien (VLAX-ENAME->VLA-OBJECT (CAR (ENTSEL "\nChon bien chan:")))) (foreach obj ls (SETQ pt (VLAX-SAFEARRAY->LIST (VLAX-VARIANT-VALUE (VLA-INTERSECTWITH obj bien ACEXTENDTHISENTITY)))) (SETQ sp (VLAX-CURVE-GETPOINTATDIST obj 0) ep (VLAX-CURVE-GETPOINTATDIST obj (VLA-GET-LENGTH obj)) param (VLAX-CURVE-GETPARAMATDIST obj (VLA-GET-LENGTH obj)) ) (IF (= (VLA-GET-OBJECTNAME obj) "AcDbPolyline") (IF (< (DISTANCE pt sp) (DISTANCE pt ep)) (VLA-PUT-COORDINATE obj 0 (fillcoord pt)) (VLA-PUT-COORDINATE obj param (fillcoord pt)) ) ) (IF (= (VLA-GET-OBJECTNAME obj) "AcDbLine") (IF (< (DISTANCE pt sp) (DISTANCE pt ep)) (VLA-PUT-STARTPOINT obj (vlax-3d-point pt)) (VLA-PUT-ENDPOINT obj (vlax-3d-point pt)) ) ) ) )
-
Dùng TextPrefix cho dim:
(defun c:d1 ()(vla-put-TextPrefix (vlax-ename->vla-object (car (entsel))) "%%C"))
- 1
- 2
-
(defun c:exptxt( / F FN LST ND P TT X Y) (setq lst (ACET-SS-TO-LIST (ssget '((0 . "*TEXT")))) fn (getfiled "Ten file: " "" "txt" 1) f (open fn "w") ) (foreach e lst (setq tt (entget e) p (cdr (assoc 10 tt)) x (rtos (car p) 2 3) y (rtos (cadr p) 2 3) nd (VL-STRING-TRANSLATE "," "." (cdr (assoc 1 tt))) ) (write-line (strcat x "\t" y "\t" nd ) f) ) (close f) (princ) )
Chỉnh sửa chút cho nó dùng cùng loại dấu ".". Các toạ độ XY dùng 3 chữ số sau thập phân.
Nó vẫn còn mà.
-
Tính chiều dài công dồn pline.
(defun c:test ( / ANG obj D ENT EP I LS LS1 MSPACE MYOBJ N PTLIST SP TMP) (setq ent (car (entsel))) (setq ls (ACET-GEOM-PLINE-POINT-LIST ent t)) (setq sp (car ls) ep (cadr ls) obj (vlax-ename->vla-object ent) ang (if (< (angle sp ep) (* pi 0.5)) 0 pi) n (length ls) i 1 ls1 (list sp) ) (while ( < i n) (setq ls1 (append ls1 (list (polar sp ang (vlax-curve-getDistAtParam obj i)))) ) (setq i (1+ i)) ) (setq mspace (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq ptlist (apply 'append ls1)) (setq tmp (vlax-make-safearray vlax-vbDouble (cons 0 (- (length ptlist) 1)))) (vlax-safearray-fill tmp ptlist) (setq myobj (vla-addPolyline mspace tmp)) )
-
Câu hỏi của bạn trúc trắc làm người không cùng chuyên môn khó nắm bắt được vấn đề. Với tôi cảm nhận được như bạn muốn chiếu đường gấp khúc đó xuống trục X thành các đoạn thẳng nối tiếp. Hoặc có thể là quay các đoạn nghiêng song song trục X để tổng chiều dài pline không đổi.
-
dist-start : nội dung rác, luôn trả về 0.
(vlax-curve-getDistAtPoint ent-obj p) sẽ bị lỗi nếu p không nằm trên polyline,
bạn nên thay bằng một điểm ClosestPoint trên polyline
(vlax-curve-getDistAtPoint ent-obj (vlax-curve-getClosestPointTo ent-obj p T))
Cảm giác như code được làm từ ChatGPT.
- 1
-
SUPER HATCH
trong Sử dụng AutoCAD
Nên viết 1 hatch phù hợp với origin
Layer DIM
trong Sử dụng AutoCAD
Đã đăng · Trả lời báo cáo
hình như QDIM không nằm trong quản lý của biến DIMLAYER.