huunhantvxdts
-
Số lượng nội dung
857 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
40
Bài đăng được đăng bởi huunhantvxdts
-
-
8 giờ trước, Thái Tuân đã nói:Cả nhà giúp có thể giúp e viết lisp chọn nhanh được cùng 1 loại block động dynamic ( cụ thể ở đây là cửa động) tuy cùng tên nhưng đã biến đổi khi mình đã co kéo kích thước hoặc Flip không ạ. Em chọn Select Similar thì nó chọn toàn bộ block cùng tên chứ không phân ra được như e mong muốn.
Ngoài ra còn 1 vấn đề e mắc phải nữa là khi thống kê cửa tự động với Data Extraction thì e không biết làm ntn để tạo được bảng số lượng cửa ở các tầng như ảnh đính kèm.( từ khúc đầu đến chỗ kích thước-quy cách thì e biết) còn từ khúc phân bố các tầng thì e k cách nào đếm được nó theo như form bên dưới ạ. Mong các pro giúp đỡ cho e với ạ :(
Cái này cần file cad thực tế bạn nhé
liên hệ zalo 0848998045
- 1
-
1 giờ trước, NHUNGLE_HD đã nói:Việc Block block attribute thì mình cũng đang sử dụng, copy ra và sửa Text, nhưng mình gặp khó khăn nên mới nhờ giúp đỡ và nó không vô lý, vì mình
đang cần nó. Bạn Bee hiểu dùm. Và ở đây mình không sửa Text
Lisp sẽ thay bạn việc copy và sửa text bạn chỉ cần chọn tất cả nhưng cái bạn cần chèn block. Đồng ý tạo block att liên hệ mình để trao đổi thêm mấy cái add zalo nhé 0848998045
-
6 phút trước, hiephl đã nói:Chào cả nhà, em mới tìm hiểu lisp. Cho em hỏi lỗi sai ạ, em cảm ơn
(Defun c:ctt (/ d1 d2 d3 d4 d5 t1 t2 t3);(THEPSAN)
(setvar "angbase" 0)
;(setvar "clayer" ....)
(command "ortho" "on")
(setq d1 (getpoint "\nBan toi:"))
(setq d2 (getpoint "\nBan nghi :"))
(setq d3 (getpoint "\nDam nghi 1 :"))
(setq d4 (getpoint "\nDam nghi 2:"))
(setq d5 (getpoint "\nBan toi:"))
(setq goc (angle d3 d4))
(setvar "osmode" 0)
(setq t1 (POLAR d1 (+ goc) 100))
(setq t2 (POLAR d2 (+ goc) 500))
(setq t3 (POLAR t2 (+ goc (/ pi 2)) (/ (- d3 d2) 4))
(Command ".pline" d1 t1 "" )
(Command ".pline" t1 t2 "" )
(Command ".pline" t2 t3 "" )
(setvar "osmode" 641)
(princ)
)dòng này thiếu dấu ngoặc nhé
(setq t3 (POLAR t2 (+ goc (/ pi 2)) (/ (- d3 d2) 4)))
-
3 giờ trước, vinhlong195 đã nói:Các tiền bối có cách nào làm mặt cắt hầm thuỷ điện nhanh không cho em xin với ạ. em xin chân thành cảm ơn
Bạn xem cái này được không nhé
(1) Hướng dẫn sử dụng lips hoàn công hầm thủy điện - YouTube
-
5 giờ trước, lanvientkh đã nói:Cảm ơn bạn, nhưng khi dùng báo lỗi, bạn kiểm tra dùm mình với nhé
First point:; error: bad argument type: point
Không hiểu sao máy bạn lại bị lỗi, mình kiểm tra trên máy mình chạy ok nhé
viết lại lisp bỏ phần dư thừa
(defun C:XY( / p1 p2) (setq dimtadold (getvar "dimtad")) (setvar "dimtad" 1) (while (setq p1 (getpoint "\nFirst point:")) (setq p2 (getpoint p1 "\nNext point:") ) (command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "") ) (setvar "dimtad" dimtadold) (princ) )
- 1
-
11 phút trước, Doan Van Ha đã nói:Thừa đoạn trên rồi
OK bác, Cám ơn bác đã góp ý
do ko suy nghĩ mà làm theo cảm tính
-
22 phút trước, lanvientkh đã nói:(defun C:XY( / p1 p2)
(setq
p1 (getpoint "\nFirst point:")
p2 (getpoint p1 "\nNext point:")
)
(setvar "dimtad" 1)
(command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "")
(princ)
)
Mình muốn thêm dòng lặp và chỉ kết thúc khi enter mà tìm hiểu chưa làm được, bạn hỗ trợ dùm(defun C:XY( / p1 p2) (setq p1 (getpoint "\nFirst point:") p2 (getpoint p1 "\nNext point:") ) (setvar "dimtad" 1) (command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "") (while (setq p1 (getpoint "\nFirst point:")) (setq p2 (getpoint p1 "\nNext point:") ) (setvar "dimtad" 1) (command "leader" p1 p2 "a" (strcat "X="(rtos (cadr p1)) "\\P" (strcat "Y="(rtos (car p1)))) "") ) (princ) )
Sửa lại cho bạn nhé
-
1 giờ} trướ}c, MacTin đã nói:Mình cần lisp chỉnh lý trình trắc ngang của vnroad, mình đã tìm trên google nhưng chưa có líp này, trước có lisp ha nhưng chỉ dùng cho trắc ngang nova, mình đã thử sửa lisp nhưng không được, mong các bác giúo mình với ạ.
bạn xem cái này được không nhé
https://www.facebook.com/groups/205847143464966/permalink/630909657625377
- 1
-
9 phút trước, VoLongTinh đã nói:Ý bạn là sao? Bạn cần thêm những gì vậy? Do mình lần đầu đăng bài nên có nhiều sai sót bạn thông cảm giúp
Bạn phải gửi file lên để người viết họ thấy mặt mũi nó như thế nào??
-
1 giờ trước, saukhoai đã nói:ae giúp với
(defun C:z1 (/ giatri sokhoang ss) (vl-load-com) (setq oldos (getvar "OSMODE")) (setvar "cmdecho" 0) (setvar "osmode" 0) (command "osnap" "none") (if (null bcd) (progn (setq bcd 150) )) (setq bcd1 (getstring (strcat "\nBuoc cot dai <"(rtos bcd 2 0)"> :"))) (if (/= bcd1 "") (setq bcd (atof bcd1))) (if (null dkt) (progn (setq dkt 6) )) (setq dkt1 (getstring (strcat "\duong kinh thep <"(rtos dkt 2 0)"> :"))) (if (/= dkt1 "") (setq dkt (atof dkt1))) (if (null khieu) (progn (setq khieu "1") )) (setq khieu1 (getstring (strcat "\nNhap ky hieu thep <" khieu "> :"))) (if (/= khieu1 "") (setq khieu khieu1)) (prompt "\nChon doi tuong Dim.") (setq ss (acet-ss-to-list (ssget '((0 . "DIMENSION"))))) (foreach enxt ss (if (or (= (setq giatri (cdr (assoc 1 (entget enxt)))) "<>") (= (setq giatri (cdr (assoc 1 (entget enxt)))) "")) (setq giatri (cdr (assoc 42 (entget enxt)))) (setq giatri (atof (cdr (assoc 1 (entget enxt))))) ) (setq toado (polar (cdr (assoc 11 (entget enxt))) (/ pi -2) 300)) (setq sokhoang (+ (fix (/ giatri bcd)) 1)) (setq text (strcat "[" khieu "]-" (rtos sokhoang 2 0) "%%C" (rtos dkt 2 0) "a" (rtos bcd 2 0))) (command "TEXT" "J" "C" toado 150 0 text) ) (princ) )
Bạn kiểm tra được chưa nhé
-
1 giờ} trướ}c, Nguyễn Cảnh Thạch đã nói:Tham khảo cái này bạn nhé
Hoàn công hầm Thủy Điện - YouTube https://www.youtube.com/watch?v=cqF1wPnJNfw
- 1
-
Hỏi Đáp
trong Lập trình khác
-
-
14 giờ trước, hoacomay70 đã nói:Trước bác Tot77 có viết cho em một lisp rất hay như sau:
- chọn một đường pline 1 cho trước
- chọn 1 đường pline 2 ( hoặc line)vuông góc với pline 1 đó
- chọn điểm đầu (hoặc cuối) của pline để xác định hướng rải
- nhâp khoảng cách cần rải và số lượng đường cần rải
Lisp sẽ rải ra các đường pline vuông góc với pline 1 và cách pline 2 khoảng cách người dùng nhập.
Trước em dùng lisp này rất tốt nhưng hiện tại em hay phải thao tác với các đường pline 1 rất dài, bản vẽ nặng, công zoom để chọn được
điểm cuối của pline rất lâu. Em nhờ các bác có thể sửa giúp lisp để không cần phải chọn điểm đầu (hoặc cuối) của pline mà lisp tự động
vẽ ra 2 đầu của pline đc không ạ.
Em xin cảm ơn.
(defun c:test(/ pl obj dd dait cl n os ki ) (defun ad(v p1 p2 / a1) (abs (- (vlax-curve-getDistAtPoint (setq a1 (vlax-ename->vla-object v)) (vlax-curve-getClosestPointTo a1 p2)) (vlax-curve-getDistAtPoint a1 (vlax-curve-getClosestPointTo a1 p1))))) (defun getp(v dis) (vlax-curve-getPointAtDist (vlax-ename->vla-object v) dis)) (defun thgoc (ent pt / param obj) (if (setq param (vlax-curve-getParamAtPoint (setq obj (vlax-ename->vla-object ent)) pt)) (- (angle '(0 0 0) (vlax-curve-getFirstDeriv obj param)) (/ pi 2)) nil)) (defun daitc(v / obj) (vlax-curve-getDistAtParam (setq obj (vlax-ename->vla-object v)) (vlax-curve-getEndParam obj))) ;;; (setq pl (car (entsel "\nChon Polyline:")) li (car (entsel "\nChon duong thang vuong goc voi Polyline:")) dail (daitc li) obj (vlax-ename->vla-object pl) dg (vlax-curve-getClosestPointTo obj (acet-dxf 10 (entget li))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (if (< (distance dg (vlax-curve-getEndPoint obj)) (distance dg (vlax-curve-getStartPoint obj))) (setq dd (vlax-curve-getStartPoint obj)) (setq dd (vlax-curve-getEndPoint obj)) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (or (and cd (or (= (type cd) 'int) (= (type cd) 'real))) (setq cd 20.00)) (setq cd (cond ((getreal (strcat "\nNhap buoc de rai <" (rtos cd 2 2) ">:"))) (cd))) ;(setq cd (getreal "\nNhap buoc de rai:")) ;(setq sl (getint "\nSo luong coc rai")) (or (and sl (or (= (type sl) 'int))) (setq sl (fix (/ (GetDis obj dd dg) cd)))) (setq sl (cond ((getint (strcat "\nNhap buoc de rai <" (rtos sl 2 0) ">:"))) (sl))) (setq ct (vlax-curve-getDistAtPoint obj dg) n 0 os (getvar "OSMODE")) (if (< (distance dd (vlax-curve-getStartPoint obj)) (distance dd (vlax-curve-getEndPoint obj))) (setq ki nil) (setq ki t)) (setvar "OSMODE" 0) (repeat sl (command "line" (setq dg1 (if ki (getp pl (+ ct (* (setq n (1+ n)) cd))) (getp pl (- ct (* (setq n (1+ n)) cd))))) (polar dg1 (thgoc pl dg1) dail) "")) (setvar "OSMODE" os) (princ) ) (defun GetDis (en pt1 pt2 / dis1 dis2 dis) (setq dis1 (vlax-curve-getDistAtPoint en (vlax-curve-getClosestPointTo en pt1)) dis2 (vlax-curve-getDistAtPoint en (vlax-curve-getClosestPointTo en pt2)) dis (abs (- dis2 dis1)) ) )
Sửa lại cho bạn nhé. Số lượng có thể nhập nếu không muốn rải hết, còn rải hết thì cứ việc ấn Enter nhé
-
3 giờ trước, vanhuyou đã nói:Cám ơn bạn mình có xem nhưng lisp đó phải pick điểm đặt cho dim và phải làm từng pline 1.
Nhờ mọi người sữa giúp mình là điểm đặt dim tự động ở điểm đầu hoặc điểm cuối củng được, và có thể quét 1 lần nhiều pline.
Mình thấy lisp ở trong bài @Danh Conggợi ý cũng đáp ứng yêu cầu ở trên của bạn rồi. chỉ cần set lại vị trí điểm đặt =0 nữa là ok.
Bạn nên vào bài trên đó yêu cầu thêm.
-
Vào lúc 27/2/2021 tại 09:57, hoacomay70 đã nói:Khi làm việc em thường phải chèn rất nhiều block kiểu này, nên xin các bác có thể viết giúp em lisp như sau không ạ.
Em có 1 đường pline có sẵn, và các block cần chèn lên pline này. Lisp cho em 2 lựa chọn:
- LC1: khi em nhập khoảng cách trên pline và tên block cần chèn, lisp sẽ tự động
chèn block trên pline theo hướng vuông góc với pline tại khoảng cách em đã nhâp.
- LC2: lựa chọn nhập khoảng cách và tên block cần chèn theo file excel (như hình dưới ạ)
Em xin cảm ơn các bác.
Thấy đề bài khá hay liên hệ mình nhé : https://www.facebook.com/lienkettudong
-
2 giờ trước, lephuocly đã nói:Cảm ơn bạn nhưng mình không dùng facebook.
Add zalo nhé 0848998045
-
4 giờ trước, lephuocly đã nói:Với cái lisp trên, nhờ bạn bỏ giúp phần xuất ra bảng. Cảm ơn !
liên hệ nhé: https://www.facebook.com/lienkettudong
- 1
-
9 giờ trước, kateBL đã nói:Chào các bạn, mình có 1 vấn đề như sau:
Khi làm việc với bản vẽ cọc (rất nhiều cọc) cần đánh stt và xuất tọa độ vn2000. Mình đã tìm được 1 lisp giải quyết được vấn đề này tuy nhiên lisp đó có hạn chế như sau:
1. Phải click chọn từ điểm cọc hoặc
2. Vẽ đường pline qua các điểm đó và thứ tự click chọn sẽ quyết định STT cho cọc
Cách làm này khá ổn đối với số lượng cọc trên mặt bằng cọc còn ít nhưng với số lượng cọc >1000 thì thời gian thao tác rất lâu và nhiều khi sai do bắt điểm ko chính xác.
Do đó mình muốn tự viết một lisp giải quyết vần đề trên như sau:
1. Tự động lấy tọa độ tâm hình tròn là tọa độ tâm cọc (do ghi chú cọc bằng hình tròn nên dùng tâm hình tròn để xác định tọa độ)
2. Sắp xếp STT theo tọa độ lấy được từ 1.
3. Đưa ra 2 tùy chọn, một là sắp xếp stt từ trái qua phải + từ trên xuống dưới; 2 là từ trên xuống dưới + từ trái sang phải
4. Vẽ đường pline qua các điểm theo stt ở 3
5. Dùng lisp đã có -> chọn pline ở 4 để đánh stt cọc + tọa độ vn2000
Mình đã tìm nhưng không thấy trên diễn đàn có bài viết theo nhu cầu của mình. Nhờ các bạn giúp đỡ
Xin cảm ơn
Cái này mình đã từng viết cho 1 bạn đặt hàng nếu bạn cần ib mình hoặc liên hệ Autolisp hỗ trợ vẽ Cad | Facebookhttps://www.facebook.com/lienkettudong
- 1
-
57 phút trước, pdhuyxn2 đã nói:Vẫn File cad này mà Bác!
Z>100 nên bị lỗi là phải rồi.
Sửa lại cho bạn nhé, cái này thì cứ chọn block là nó đo nhé
-
11 giờ trước, pdhuyxn2 đã nói:Sao EM làm vẫn không được Bác ơi ? Dânhs lệnh ATT thì Không được. Đánh lệnh DAT thì giống như Lisp cũ Bác Ạ.
Chắc block có Z quá lớn, mình đã lọc các block có khoảng cách 50 đến polyline rồi
-
2 giờ trước, pdhuyxn2 đã nói:Gửi lại cho bạn nhé
-
13 giờ trước, pdhuyxn2 đã nói:Cám ơn Bác đã giúp đỡ. Nhưng Bác ơi Bác có thể chỉnh Lisp trong trường hợp Block nằm lệch đường Plyline vẫn có thể dóng kích thước được không ạ.
nghĩa là bạn chọn block nào thì block đó sẽ được đo
-
2 giờ trước, pdhuyxn2 đã nói:Nhờ các Bác trên diễn đàn giúp đỡ chỉnh sửa lisp này thành lisp dóng kích thước hàng loạt các block.
;; AUTO DIMALINGED LINES AND POLYLINES
;;;-------------------------------------------------------------
(defun TBCong (x1 x2) (/ (+ x1 x2) 2)) ;;;Trung binh cong
;;;-------------------------------------------------------------
(defun MidP (p1 p2) ;;;Midpoint
(list (TBCong (car p1) (car p2)) (TBCong (cadr p1) (cadr p2)) (TBCong (caddr p1) (caddr p2)))
)
;;;-------------------------------------------------------------
(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i))
)
L
)
;;;-------------------------------------------------------------
(defun etype (e) (cdr (assoc 0 (entget e)))) ;;;Entity type
;;;-------------------------------------------------------------
(defun dim2p (p1 p2 s) ;;;Dimaligned 2 Point
(command "dimaligned" p1 p2 (polar (MidP p1 p2) (+ (angle p1 p2) (/ pi 2)) s))
)
;;;-------------------------------------------------------------
(defun dimLine(e s) ;;;Dimaligned Line
(dim2p (cdr (assoc 10 (entget e))) (cdr (assoc 11 (entget e))) s)
)
;;;-------------------------------------------------------------
(defun dimPline(e s) ;;;Dimaligned PLine
(setq Lp (getvert e) i 0)
(repeat (1- (length Lp))
(dim2p (nth i Lp) (nth (1+ i) Lp) s)
(setq i (1+ i))
)
);;;-------------------------------------------------------------
(defun C:ATD( / ss s oldos e) ;;;AutoDimaligned Line & Pline
(if (not s0) (setq s0 0))
(setq
ss (ssget '((0 . "LINE,LWPOLYLINE")))
s (getdist (strcat "\nKhoang cach tu doi tuong den duong kich thuoc <" (rtos s0) ">:"))
oldos (getvar "osmode")
)
(if (not s) (setq s s0) (setq s0 s))
(setvar "osmode" 0)
(while (setq e (ssname ss 0))
(if (= (etype e) "LINE") (dimLine e s) (dimPline e s))
(ssdel e ss)
)
(setvar "osmode" oldos)
(princ)
)
Gửi bạn nhé
Lệnh DAT
Lưu ý: Các block chuyển cao độ z về 0 nhé
- 1
Xin lisp và cách sử dụng lisp thống kê thép dầm, sàn, cột, đai
trong AutoLisp
Đã đăng · Trả lời báo cáo
liên hệ zalo 0848998045
gửi bản vẽ cho mình xem trước nhé